input grammar: cplusplus.y
State 0 conflicts: 41 shift/reduce, 3 reduce/reduce State 2 conflicts: 39 shift/reduce, 3 reduce/reduce State 4 conflicts: 1 reduce/reduce State 10 conflicts: 1 shift/reduce State 22 conflicts: 3 shift/reduce, 1 reduce/reduce State 23 conflicts: 1 shift/reduce State 25 conflicts: 1 shift/reduce State 50 conflicts: 36 shift/reduce, 3 reduce/reduce State 51 conflicts: 8 shift/reduce, 5 reduce/reduce State 54 conflicts: 3 shift/reduce State 58 conflicts: 3 shift/reduce, 2 reduce/reduce State 59 conflicts: 3 shift/reduce State 61 conflicts: 40 shift/reduce, 3 reduce/reduce State 63 conflicts: 1 shift/reduce State 75 conflicts: 1 reduce/reduce State 89 conflicts: 1 shift/reduce, 1 reduce/reduce State 96 conflicts: 100 reduce/reduce State 101 conflicts: 39 shift/reduce, 3 reduce/reduce State 114 conflicts: 39 shift/reduce, 3 reduce/reduce State 116 conflicts: 61 reduce/reduce State 118 conflicts: 39 shift/reduce, 3 reduce/reduce State 119 conflicts: 5 shift/reduce, 1 reduce/reduce State 121 conflicts: 1 shift/reduce State 124 conflicts: 1 shift/reduce State 129 conflicts: 2 shift/reduce State 132 conflicts: 1 shift/reduce, 1 reduce/reduce State 134 conflicts: 2 shift/reduce State 135 conflicts: 40 shift/reduce, 3 reduce/reduce State 137 conflicts: 1 shift/reduce State 141 conflicts: 1 shift/reduce State 146 conflicts: 2 shift/reduce State 147 conflicts: 39 shift/reduce, 3 reduce/reduce State 152 conflicts: 3 shift/reduce State 158 conflicts: 3 shift/reduce State 167 conflicts: 2 shift/reduce State 168 conflicts: 3 shift/reduce State 171 conflicts: 1 shift/reduce, 1 reduce/reduce State 172 conflicts: 1 shift/reduce State 174 conflicts: 3 shift/reduce State 175 conflicts: 3 shift/reduce, 1 reduce/reduce State 177 conflicts: 1 shift/reduce State 178 conflicts: 1 shift/reduce State 179 conflicts: 1 reduce/reduce State 180 conflicts: 2 shift/reduce State 186 conflicts: 1 shift/reduce State 190 conflicts: 1 shift/reduce State 195 conflicts: 39 shift/reduce, 3 reduce/reduce State 198 conflicts: 1 shift/reduce State 200 conflicts: 100 reduce/reduce State 202 conflicts: 1 shift/reduce State 207 conflicts: 2 shift/reduce State 213 conflicts: 39 shift/reduce, 3 reduce/reduce State 218 conflicts: 39 shift/reduce, 3 reduce/reduce State 225 conflicts: 1 shift/reduce State 227 conflicts: 1 shift/reduce State 228 conflicts: 1 shift/reduce State 232 conflicts: 1 shift/reduce State 237 conflicts: 2 reduce/reduce State 244 conflicts: 2 shift/reduce State 246 conflicts: 1 shift/reduce State 247 conflicts: 2 shift/reduce State 248 conflicts: 2 shift/reduce State 251 conflicts: 2 shift/reduce State 252 conflicts: 2 shift/reduce State 253 conflicts: 2 shift/reduce State 260 conflicts: 2 shift/reduce State 261 conflicts: 2 shift/reduce State 263 conflicts: 2 shift/reduce State 281 conflicts: 2 shift/reduce State 282 conflicts: 1 shift/reduce State 284 conflicts: 1 shift/reduce State 286 conflicts: 1 shift/reduce, 1 reduce/reduce State 289 conflicts: 1 shift/reduce State 294 conflicts: 1 shift/reduce State 297 conflicts: 1 reduce/reduce State 303 conflicts: 2 shift/reduce State 318 conflicts: 1 shift/reduce State 324 conflicts: 1 shift/reduce State 325 conflicts: 1 shift/reduce State 326 conflicts: 2 shift/reduce State 327 conflicts: 1 shift/reduce State 329 conflicts: 2 shift/reduce State 332 conflicts: 2 shift/reduce State 333 conflicts: 4 shift/reduce State 336 conflicts: 1 shift/reduce State 343 conflicts: 1 shift/reduce State 346 conflicts: 2 shift/reduce State 355 conflicts: 5 shift/reduce, 2 reduce/reduce State 362 conflicts: 3 shift/reduce, 1 reduce/reduce State 376 conflicts: 2 shift/reduce State 377 conflicts: 2 shift/reduce State 378 conflicts: 2 shift/reduce State 385 conflicts: 3 shift/reduce State 392 conflicts: 1 shift/reduce State 396 conflicts: 1 shift/reduce State 401 conflicts: 2 shift/reduce State 404 conflicts: 3 shift/reduce State 406 conflicts: 3 reduce/reduce State 407 conflicts: 1 shift/reduce State 412 conflicts: 24 shift/reduce, 3 reduce/reduce State 413 conflicts: 2 shift/reduce, 1 reduce/reduce State 414 conflicts: 1 shift/reduce State 418 conflicts: 5 shift/reduce, 1 reduce/reduce State 421 conflicts: 2 shift/reduce State 422 conflicts: 1 shift/reduce State 423 conflicts: 5 shift/reduce, 1 reduce/reduce State 430 conflicts: 1 shift/reduce State 431 conflicts: 2 shift/reduce State 436 conflicts: 2 shift/reduce State 438 conflicts: 32 shift/reduce State 444 conflicts: 1 shift/reduce State 478 conflicts: 1 shift/reduce State 493 conflicts: 1 shift/reduce State 498 conflicts: 1 shift/reduce State 500 conflicts: 6 shift/reduce State 505 conflicts: 100 reduce/reduce State 510 conflicts: 2 shift/reduce State 511 conflicts: 2 shift/reduce State 512 conflicts: 2 shift/reduce State 513 conflicts: 2 shift/reduce State 514 conflicts: 2 shift/reduce State 518 conflicts: 2 shift/reduce State 520 conflicts: 2 shift/reduce State 523 conflicts: 2 shift/reduce State 524 conflicts: 1 shift/reduce State 525 conflicts: 2 shift/reduce State 526 conflicts: 2 shift/reduce State 527 conflicts: 2 shift/reduce State 528 conflicts: 2 shift/reduce State 529 conflicts: 2 shift/reduce State 530 conflicts: 2 shift/reduce State 531 conflicts: 2 shift/reduce State 532 conflicts: 2 shift/reduce State 534 conflicts: 2 shift/reduce State 536 conflicts: 5 shift/reduce, 1 reduce/reduce State 541 conflicts: 2 shift/reduce State 542 conflicts: 2 shift/reduce State 554 conflicts: 2 shift/reduce State 555 conflicts: 2 shift/reduce State 556 conflicts: 2 shift/reduce State 557 conflicts: 2 shift/reduce State 558 conflicts: 2 shift/reduce State 559 conflicts: 2 shift/reduce State 561 conflicts: 2 shift/reduce State 562 conflicts: 2 shift/reduce State 563 conflicts: 2 shift/reduce State 564 conflicts: 2 shift/reduce State 565 conflicts: 2 shift/reduce State 570 conflicts: 2 shift/reduce State 571 conflicts: 2 shift/reduce State 572 conflicts: 2 shift/reduce State 573 conflicts: 2 shift/reduce State 574 conflicts: 2 shift/reduce State 575 conflicts: 2 shift/reduce State 576 conflicts: 2 shift/reduce State 578 conflicts: 2 shift/reduce State 594 conflicts: 39 shift/reduce, 3 reduce/reduce State 606 conflicts: 2 shift/reduce State 616 conflicts: 4 shift/reduce State 623 conflicts: 2 shift/reduce State 625 conflicts: 3 shift/reduce, 1 reduce/reduce State 626 conflicts: 3 shift/reduce State 627 conflicts: 1 shift/reduce State 630 conflicts: 1 shift/reduce State 636 conflicts: 2 reduce/reduce State 639 conflicts: 1 shift/reduce State 652 conflicts: 2 shift/reduce State 653 conflicts: 1 shift/reduce State 658 conflicts: 2 shift/reduce State 661 conflicts: 2 shift/reduce State 673 conflicts: 2 shift/reduce State 674 conflicts: 1 shift/reduce State 676 conflicts: 2 shift/reduce State 678 conflicts: 2 shift/reduce State 681 conflicts: 1 shift/reduce State 685 conflicts: 1 reduce/reduce State 687 conflicts: 1 shift/reduce State 689 conflicts: 2 shift/reduce, 1 reduce/reduce State 692 conflicts: 5 shift/reduce State 699 conflicts: 2 shift/reduce State 701 conflicts: 2 shift/reduce State 703 conflicts: 3 shift/reduce, 2 reduce/reduce State 704 conflicts: 1 shift/reduce State 739 conflicts: 2 shift/reduce State 742 conflicts: 2 shift/reduce State 748 conflicts: 1 shift/reduce State 749 conflicts: 1 shift/reduce State 755 conflicts: 2 shift/reduce State 756 conflicts: 100 reduce/reduce State 760 conflicts: 6 shift/reduce State 762 conflicts: 2 shift/reduce State 773 conflicts: 2 shift/reduce State 775 conflicts: 2 shift/reduce State 777 conflicts: 2 shift/reduce State 782 conflicts: 1 shift/reduce State 783 conflicts: 1 shift/reduce State 789 conflicts: 1 shift/reduce State 792 conflicts: 37 shift/reduce, 3 reduce/reduce State 802 conflicts: 1 reduce/reduce State 803 conflicts: 1 shift/reduce State 821 conflicts: 1 reduce/reduce State 827 conflicts: 39 shift/reduce, 3 reduce/reduce State 847 conflicts: 1 shift/reduce State 862 conflicts: 1 reduce/reduce State 864 conflicts: 2 shift/reduce, 2 reduce/reduce State 873 conflicts: 1 shift/reduce, 1 reduce/reduce State 880 conflicts: 2 shift/reduce State 885 conflicts: 2 shift/reduce State 905 conflicts: 1 shift/reduce State 906 conflicts: 2 shift/reduce State 908 conflicts: 2 shift/reduce State 915 conflicts: 4 shift/reduce State 918 conflicts: 5 shift/reduce State 924 conflicts: 1 shift/reduce State 934 conflicts: 1 shift/reduce State 942 conflicts: 1 shift/reduce State 943 conflicts: 2 shift/reduce State 944 conflicts: 2 shift/reduce State 949 conflicts: 2 shift/reduce State 961 conflicts: 2 shift/reduce State 963 conflicts: 2 shift/reduce State 964 conflicts: 1 shift/reduce State 965 conflicts: 3 shift/reduce State 966 conflicts: 2 shift/reduce State 968 conflicts: 2 shift/reduce State 971 conflicts: 36 shift/reduce, 3 reduce/reduce State 972 conflicts: 2 shift/reduce State 977 conflicts: 37 shift/reduce, 3 reduce/reduce State 980 conflicts: 2 shift/reduce State 988 conflicts: 39 shift/reduce, 3 reduce/reduce State 1008 conflicts: 1 reduce/reduce State 1018 conflicts: 1 shift/reduce State 1024 conflicts: 3 shift/reduce State 1027 conflicts: 1 shift/reduce State 1029 conflicts: 1 shift/reduce State 1030 conflicts: 1 shift/reduce State 1038 conflicts: 1 shift/reduce State 1050 conflicts: 4 shift/reduce State 1051 conflicts: 2 shift/reduce State 1052 conflicts: 2 shift/reduce State 1056 conflicts: 2 shift/reduce State 1059 conflicts: 1 shift/reduce, 1 reduce/reduce State 1062 conflicts: 27 shift/reduce, 3 reduce/reduce State 1067 conflicts: 2 shift/reduce State 1068 conflicts: 2 shift/reduce State 1069 conflicts: 2 shift/reduce State 1070 conflicts: 2 shift/reduce State 1075 conflicts: 2 shift/reduce State 1079 conflicts: 2 shift/reduce State 1083 conflicts: 3 shift/reduce State 1085 conflicts: 2 shift/reduce State 1090 conflicts: 2 reduce/reduce State 1091 conflicts: 1 shift/reduce State 1092 conflicts: 2 shift/reduce State 1096 conflicts: 37 shift/reduce, 3 reduce/reduce State 1100 conflicts: 2 shift/reduce State 1102 conflicts: 2 shift/reduce State 1137 conflicts: 2 shift/reduce State 1139 conflicts: 1 shift/reduce State 1142 conflicts: 2 shift/reduce State 1146 conflicts: 1 shift/reduce, 2 reduce/reduce State 1155 conflicts: 39 shift/reduce, 3 reduce/reduce State 1168 conflicts: 1 shift/reduce State 1171 conflicts: 2 shift/reduce State 1176 conflicts: 37 shift/reduce, 3 reduce/reduce State 1181 conflicts: 37 shift/reduce, 3 reduce/reduce State 1183 conflicts: 19 shift/reduce, 3 reduce/reduce State 1185 conflicts: 37 shift/reduce, 39 reduce/reduce State 1195 conflicts: 61 shift/reduce, 41 reduce/reduce State 1217 conflicts: 1 shift/reduce State 1218 conflicts: 1 shift/reduce State 1236 conflicts: 2 shift/reduce State 1242 conflicts: 2 shift/reduce State 1244 conflicts: 19 shift/reduce, 39 reduce/reduce State 1249 conflicts: 37 shift/reduce, 3 reduce/reduce State 1250 conflicts: 61 shift/reduce, 41 reduce/reduce State 1253 conflicts: 19 shift/reduce, 3 reduce/reduce State 1262 conflicts: 1 shift/reduce State 1265 conflicts: 1 shift/reduce State 1268 conflicts: 1 shift/reduce State 1270 conflicts: 3 shift/reduce State 1271 conflicts: 37 shift/reduce, 3 reduce/reduce State 1272 conflicts: 2 shift/reduce State 1275 conflicts: 2 shift/reduce State 1278 conflicts: 19 shift/reduce, 3 reduce/reduce State 1279 conflicts: 1 shift/reduce State 1282 conflicts: 2 shift/reduce State 1286 conflicts: 1 shift/reduce State 1290 conflicts: 2 shift/reduce State 1291 conflicts: 3 shift/reduce State 1292 conflicts: 2 shift/reduce State 1294 conflicts: 37 shift/reduce, 3 reduce/reduce State 1295 conflicts: 37 shift/reduce, 3 reduce/reduce State 1296 conflicts: 4 shift/reduce State 1301 conflicts: 1 reduce/reduce State 1302 conflicts: 1 reduce/reduce State 1307 conflicts: 37 shift/reduce, 3 reduce/reduce State 1314 conflicts: 37 shift/reduce, 3 reduce/reduce State 1316 conflicts: 37 shift/reduce, 3 reduce/reduce State 1317 conflicts: 1 shift/reduce State 1321 conflicts: 37 shift/reduce, 3 reduce/reduce
0 $accept → translation-unit $end 1 COMMA-opt → %empty 2 | COMMA 3 CONSTEXPR-opt → %empty 4 | CONSTEXPR 5 ELLIPSIS-opt → %empty 6 | ELLIPSIS 7 EXPORT-opt → %empty 8 | EXPORT 9 EXTERN-opt → %empty 10 | EXTERN 11 IDENTIFIER-opt → %empty 12 | IDENTIFIER 13 INLINE-opt → %empty 14 | INLINE 15 NOEXCEPT-opt → %empty 16 | NOEXCEPT 17 NOT-opt → %empty 18 | NOT 19 SCOPE-opt → %empty 20 | SCOPE 21 TEMPLATE-opt → %empty 22 | TEMPLATE 23 THIS-opt → %empty 24 | THIS 25 TYPENAME-opt → %empty 26 | TYPENAME 27 VIRTUAL-opt → %empty 28 | VIRTUAL 29 abstract-declarator → ptr-abstract-declarator 30 | noptr-abstract-declarator-opt parameters-and-qualifiers trailing-return-type 31 | abstract-pack-declarator 32 abstract-declarator-opt → %empty 33 | abstract-declarator 34 abstract-pack-declarator → noptr-abstract-pack-declarator 35 | ptr-operator abstract-pack-declarator 36 access-specifier → PRIVATE 37 | PROTECTED 38 | PUBLIC 39 access-specifier-opt → %empty 40 | access-specifier 41 additive-expression → multiplicative-expression 42 | additive-expression PLUS multiplicative-expression 43 | additive-expression MINUS multiplicative-expression 44 alias-declaration → USING IDENTIFIER attribute-specifier-seq-opt EQ defining-type-id SEMICOLON 45 alignment-specifier → ALIGNAS OPEN_PAREN type-id ELLIPSIS-opt CLOSE_PAREN 46 | ALIGNAS OPEN_PAREN constant-expression ELLIPSIS-opt CLOSE_PAREN 47 and-expression → equality-expression 48 | and-expression AND equality-expression 49 asm-declaration → attribute-specifier-seq-opt ASM OPEN_PAREN string-literal CLOSE_PAREN SEMICOLON 50 assignment-expression → conditional-expression 51 | yield-expression 52 | throw-expression 53 | logical-or-expression assignment-operator initializer-clause 54 assignment-expression-opt → %empty 55 | assignment-expression 56 assignment-operator → EQ 57 | MULT_EQ 58 | DIV_EQ 59 | MOD_EQ 60 | PLUS_EQ 61 | MINUS_EQ 62 | RSHIFT_EQ 63 | LSHIFT_EQ 64 | AND_EQ 65 | XOR_EQ 66 | OR_EQ 67 attribute → attribute-token attribute-argument-clause-opt 68 attribute-argument-clause → OPEN_PAREN balanced-token-seq-opt CLOSE_PAREN 69 attribute-argument-clause-opt → %empty 70 | attribute-argument-clause 71 attribute-declaration → attribute-specifier-seq SEMICOLON 72 attribute-list → attribute-opt 73 | attribute-list COMMA attribute-opt 74 | attribute ELLIPSIS 75 | attribute-list COMMA attribute ELLIPSIS 76 attribute-namespace → IDENTIFIER 77 attribute-opt → %empty 78 | attribute 79 attribute-scoped-token → attribute-namespace SCOPE IDENTIFIER 80 attribute-specifier → OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE 81 | alignment-specifier 82 attribute-specifier-seq → attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → %empty 84 | attribute-specifier-seq 85 attribute-token → IDENTIFIER 86 | attribute-scoped-token 87 attribute-using-prefix → USING attribute-namespace COLON 88 attribute-using-prefix-opt → %empty 89 | attribute-using-prefix 90 await-expression → CO_AWAIT cast-expression 91 balanced-token → OPEN_PAREN balanced-token-seq-opt CLOSE_PAREN 92 | OPEN_SQUARE balanced-token-seq-opt CLOSE_SQUARE 93 | OPEN_BRACE balanced-token-seq-opt CLOSE_BRACE 94 | BALANCED_TOKEN 95 balanced-token-seq → balanced-token 96 | balanced-token-seq balanced-token 97 balanced-token-seq-opt → %empty 98 | balanced-token-seq 99 base-clause → COLON base-specifier-list 100 base-clause-opt → %empty 101 | base-clause 102 base-specifier → attribute-specifier-seq-opt class-or-decltype 103 | attribute-specifier-seq-opt VIRTUAL access-specifier-opt class-or-decltype 104 | attribute-specifier-seq-opt access-specifier VIRTUAL-opt class-or-decltype 105 base-specifier-list → base-specifier ELLIPSIS-opt 106 | base-specifier-list COMMA base-specifier ELLIPSIS-opt 107 block-declaration → simple-declaration 108 | asm-declaration 109 | namespace-alias-definition 110 | using-declaration 111 | using-enum-declaration 112 | using-directive 113 | static_assert-declaration 114 | alias-declaration 115 | opaque-enum-declaration 116 brace-or-equal-initializer → EQ initializer-clause 117 | braced-init-list 118 brace-or-equal-initializer-opt → %empty 119 | brace-or-equal-initializer 120 braced-init-list → OPEN_BRACE initializer-list COMMA-opt CLOSE_BRACE 121 | OPEN_BRACE designated-initializer-list COMMA-opt CLOSE_BRACE 122 | OPEN_BRACE CLOSE_BRACE 123 capture → simple-capture 124 | init-capture 125 capture-default → AND 126 | EQ 127 capture-list → capture 128 | capture-list COMMA capture 129 cast-expression → unary-expression 130 | OPEN_PAREN type-id CLOSE_PAREN cast-expression 131 class-head → class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt base-clause-opt 133 class-head-name → nested-name-specifier-opt class-name 134 class-key → CLASS 135 | STRUCT 136 | UNION 137 class-name → IDENTIFIER 138 | simple-template-id 139 class-or-decltype → nested-name-specifier-opt type-name 140 | nested-name-specifier TEMPLATE simple-template-id 141 | decltype-specifier 142 class-specifier → class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 143 class-virt-specifier → FINAL 144 class-virt-specifier-opt → %empty 145 | class-virt-specifier 146 compare-expression → shift-expression 147 | compare-expression SPACESHIP shift-expression 148 compound-requirement → OPEN_BRACE expression CLOSE_BRACE NOEXCEPT-opt return-type-requirement-opt SEMICOLON 149 compound-statement → OPEN_BRACE statement-seq-opt CLOSE_BRACE 150 concept-definition → CONCEPT concept-name EQ constraint-expression SEMICOLON 151 concept-name → IDENTIFIER 152 condition → expression 153 | attribute-specifier-seq-opt decl-specifier-seq declarator brace-or-equal-initializer 154 condition-opt → %empty 155 | condition 156 conditional-expression → logical-or-expression 157 | logical-or-expression QUERY expression COLON assignment-expression 158 constant-expression → conditional-expression 159 constant-expression-opt → %empty 160 | constant-expression 161 constraint-expression → logical-or-expression 162 constraint-logical-and-expression → primary-expression 163 | constraint-logical-and-expression AND_AND primary-expression 164 constraint-logical-or-expression → constraint-logical-and-expression 165 | constraint-logical-or-expression OR_OR constraint-logical-and-expression 166 conversion-declarator → ptr-operator conversion-declarator-opt 167 conversion-declarator-opt → %empty 168 | conversion-declarator 169 conversion-function-id → OPERATOR conversion-type-id 170 conversion-type-id → type-specifier-seq conversion-declarator-opt 171 coroutine-return-statement → CO_RETURN expr-or-braced-init-list-opt SEMICOLON 172 ctor-initializer → COLON mem-initializer-list 173 ctor-initializer-opt → %empty 174 | ctor-initializer 175 cv-qualifier → CONST 176 | VOLATILE 177 cv-qualifier-seq → cv-qualifier cv-qualifier-seq-opt 178 cv-qualifier-seq-opt → %empty 179 | cv-qualifier-seq 180 decl-specifier → storage-class-specifier 181 | defining-type-specifier 182 | function-specifier 183 | FRIEND 184 | TYPEDEF 185 | CONSTEXPR 186 | CONSTEVAL 187 | CONSTINIT 188 | INLINE 189 decl-specifier-seq → decl-specifier attribute-specifier-seq-opt 190 | decl-specifier decl-specifier-seq 191 decl-specifier-seq-opt → %empty 192 | decl-specifier-seq 193 declaration → block-declaration 194 | nodeclspec-function-declaration 195 | function-definition 196 | template-declaration 197 | deduction-guide 198 | explicit-instantiation 199 | explicit-specialization 200 | export-declaration 201 | linkage-specification 202 | namespace-definition 203 | empty-declaration 204 | attribute-declaration 205 | module-import-declaration 206 declaration-seq → declaration 207 | declaration-seq declaration 208 declaration-seq-opt → %empty 209 | declaration-seq 210 declaration-statement → block-declaration 211 declarator → ptr-declarator 212 | noptr-declarator parameters-and-qualifiers trailing-return-type 213 declarator-id → ELLIPSIS-opt id-expression 214 decltype-specifier → DECLTYPE OPEN_PAREN expression CLOSE_PAREN 215 deduction-guide → explicit-specifier-opt template-name OPEN_PAREN parameter-declaration-clause CLOSE_PAREN DEREF simple-template-id SEMICOLON 216 defining-type-id → defining-type-specifier-seq abstract-declarator-opt 217 defining-type-specifier → type-specifier 218 | class-specifier 219 | enum-specifier 220 defining-type-specifier-seq → defining-type-specifier attribute-specifier-seq-opt 221 | defining-type-specifier defining-type-specifier-seq 222 delete-expression → SCOPE-opt DELETE cast-expression 223 | SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 224 designated-initializer-clause → designator brace-or-equal-initializer 225 designated-initializer-list → designated-initializer-clause 226 | designated-initializer-list COMMA designated-initializer-clause 227 designator → DOT IDENTIFIER 228 elaborated-enum-specifier → ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key simple-template-id 231 | class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | elaborated-enum-specifier 233 empty-declaration → SEMICOLON 234 enclosing-namespace-specifier → IDENTIFIER 235 | enclosing-namespace-specifier SCOPE INLINE-opt IDENTIFIER 236 enum-base → COLON type-specifier-seq 237 enum-base-opt → %empty 238 | enum-base 239 enum-head → enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 240 enum-head-name → nested-name-specifier-opt IDENTIFIER 241 enum-head-name-opt → %empty 242 | enum-head-name 243 enum-key → ENUM 244 | ENUM CLASS 245 | ENUM STRUCT 246 enum-name → IDENTIFIER 247 enum-specifier → enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 249 enumerator → IDENTIFIER attribute-specifier-seq-opt 250 enumerator-definition → enumerator 251 | enumerator EQ constant-expression 252 enumerator-list → enumerator-definition 253 | enumerator-list COMMA enumerator-definition 254 enumerator-list-opt → %empty 255 | enumerator-list 256 equality-expression → relational-expression 257 | equality-expression EQ_EQ relational-expression 258 | equality-expression NOT_EQ relational-expression 259 exception-declaration → attribute-specifier-seq-opt type-specifier-seq declarator 260 | attribute-specifier-seq-opt type-specifier-seq abstract-declarator-opt 261 | ELLIPSIS 262 exclusive-or-expression → and-expression 263 | exclusive-or-expression XOR and-expression 264 explicit-instantiation → EXTERN-opt TEMPLATE declaration 265 explicit-specialization → TEMPLATE LESS GREATER declaration 266 explicit-specifier → EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | EXPLICIT 268 explicit-specifier-opt → %empty 269 | explicit-specifier 270 export-declaration → EXPORT declaration 271 | EXPORT OPEN_BRACE declaration-seq-opt CLOSE_BRACE 272 | EXPORT module-import-declaration 273 expr-or-braced-init-list → expression 274 | braced-init-list 275 expr-or-braced-init-list-opt → %empty 276 | expr-or-braced-init-list 277 expression → assignment-expression 278 | expression COMMA assignment-expression 279 expression-list → initializer-list 280 expression-list-opt → %empty 281 | expression-list 282 expression-opt → %empty 283 | expression 284 expression-statement → expression-opt SEMICOLON 285 fold-expression → OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 288 fold-operator → PLUS 289 | MINUS 290 | MULT 291 | DIV 292 | MOD 293 | XOR 294 | AND 295 | OR 296 | LSHIFT 297 | RSHIFT 298 | PLUS_EQ 299 | MINUS_EQ 300 | MULT_EQ 301 | DIV_EQ 302 | MOD_EQ 303 | XOR_EQ 304 | AND_EQ 305 | OR_EQ 306 | LSHIFT_EQ 307 | RSHIFT_EQ 308 | EQ 309 | EQ_EQ 310 | NOT_EQ 311 | LESS 312 | GREATER 313 | LESS_EQ 314 | GREATER_EQ 315 | AND_AND 316 | OR_OR 317 | COMMA 318 | DOT_STAR 319 | DEREF_STAR 320 for-range-declaration → attribute-specifier-seq-opt decl-specifier-seq declarator 321 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE 322 for-range-initializer → expr-or-braced-init-list 323 function-body → ctor-initializer-opt compound-statement 324 | function-try-block 325 | EQ DEFAULT SEMICOLON 326 | EQ DELETE SEMICOLON 327 function-definition → attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier → VIRTUAL 330 | explicit-specifier 331 function-try-block → TRY ctor-initializer-opt compound-statement handler-seq 332 global-module-fragment → MODULE SEMICOLON declaration-seq-opt 333 global-module-fragment-opt → %empty 334 | global-module-fragment 335 handler → CATCH OPEN_PAREN exception-declaration CLOSE_PAREN compound-statement 336 handler-seq → handler handler-seq-opt 337 handler-seq-opt → %empty 338 | handler-seq 339 header-name → HEADER_NAME 340 id-expression → unqualified-id 341 | qualified-id 342 identifier-list → IDENTIFIER 343 | identifier-list COMMA IDENTIFIER 344 inclusive-or-expression → exclusive-or-expression 345 | inclusive-or-expression OR exclusive-or-expression 346 init-capture → ELLIPSIS-opt IDENTIFIER initializer 347 | AND ELLIPSIS-opt IDENTIFIER initializer 348 init-declarator → declarator initializer-opt 349 | declarator requires-clause 350 init-declarator-list → init-declarator 351 | init-declarator-list COMMA init-declarator 352 init-declarator-list-opt → %empty 353 | init-declarator-list 354 init-statement → expression-statement 355 | simple-declaration 356 | alias-declaration 357 init-statement-opt → %empty 358 | init-statement 359 initializer → brace-or-equal-initializer 360 | OPEN_PAREN expression-list CLOSE_PAREN 361 initializer-clause → assignment-expression 362 | braced-init-list 363 initializer-list → initializer-clause ELLIPSIS-opt 364 | initializer-list COMMA initializer-clause ELLIPSIS-opt 365 initializer-opt → %empty 366 | initializer 367 iteration-statement → WHILE OPEN_PAREN condition CLOSE_PAREN statement 368 | DO statement WHILE OPEN_PAREN expression CLOSE_PAREN SEMICOLON 369 | FOR OPEN_PAREN init-statement condition-opt SEMICOLON expression-opt CLOSE_PAREN statement 370 | FOR OPEN_PAREN init-statement-opt for-range-declaration COLON for-range-initializer CLOSE_PAREN statement 371 jump-statement → BREAK SEMICOLON 372 | CONTINUE SEMICOLON 373 | RETURN expr-or-braced-init-list-opt SEMICOLON 374 | coroutine-return-statement 375 | GOTO IDENTIFIER SEMICOLON 376 labeled-statement → attribute-specifier-seq-opt IDENTIFIER COLON statement 377 | attribute-specifier-seq-opt CASE constant-expression COLON statement 378 | attribute-specifier-seq-opt DEFAULT COLON statement 379 lambda-capture → capture-default 380 | capture-list 381 | capture-default COMMA capture-list 382 lambda-capture-opt → %empty 383 | lambda-capture 384 lambda-declarator → lambda-specifiers 385 | OPEN_PAREN parameter-declaration-clause CLOSE_PAREN lambda-specifiers requires-clause-opt 386 lambda-expression → lambda-introducer lambda-declarator compound-statement 387 | lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 389 lambda-specifiers → decl-specifier-seq-opt noexcept-specifier-opt attribute-specifier-seq-opt trailing-return-type-opt 390 linkage-specification → EXTERN string-literal OPEN_BRACE declaration-seq-opt CLOSE_BRACE 391 | EXTERN string-literal declaration 392 literal-operator-id → OPERATOR string-literal IDENTIFIER 393 | OPERATOR user-defined-string-literal 394 logical-and-expression → inclusive-or-expression 395 | logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → logical-and-expression 397 | logical-or-expression OR_OR logical-and-expression 398 mem-initializer → mem-initializer-id OPEN_PAREN expression-list-opt CLOSE_PAREN 399 | mem-initializer-id braced-init-list 400 mem-initializer-id → class-or-decltype 401 | IDENTIFIER 402 mem-initializer-list → mem-initializer ELLIPSIS-opt 403 | mem-initializer-list COMMA mem-initializer ELLIPSIS-opt 404 member-declaration → attribute-specifier-seq-opt decl-specifier-seq-opt member-declarator-list-opt SEMICOLON 405 | function-definition 406 | using-declaration 407 | using-enum-declaration 408 | static_assert-declaration 409 | template-declaration 410 | explicit-specialization 411 | deduction-guide 412 | alias-declaration 413 | opaque-enum-declaration 414 | empty-declaration 415 member-declarator → declarator virt-specifier-seq-opt pure-specifier-opt 416 | declarator requires-clause 417 | declarator brace-or-equal-initializer-opt 418 | IDENTIFIER-opt attribute-specifier-seq-opt COLON constant-expression brace-or-equal-initializer-opt 419 member-declarator-list → member-declarator 420 | member-declarator-list COMMA member-declarator 421 member-declarator-list-opt → %empty 422 | member-declarator-list 423 member-specification → member-declaration member-specification-opt 424 | access-specifier COLON member-specification-opt 425 member-specification-opt → %empty 426 | member-specification 427 module-declaration → EXPORT-opt MODULE module-name module-partition-opt attribute-specifier-seq-opt SEMICOLON 428 module-import-declaration → IMPORT module-name attribute-specifier-seq-opt SEMICOLON 429 | IMPORT module-partition attribute-specifier-seq-opt SEMICOLON 430 | IMPORT header-name attribute-specifier-seq-opt SEMICOLON 431 module-name → module-name-qualifier-opt IDENTIFIER 432 module-name-qualifier → IDENTIFIER DOT 433 | module-name-qualifier IDENTIFIER DOT 434 module-name-qualifier-opt → %empty 435 | module-name-qualifier 436 module-partition → COLON module-name-qualifier-opt IDENTIFIER 437 module-partition-opt → %empty 438 | module-partition 439 multiplicative-expression → pm-expression 440 | multiplicative-expression MULT pm-expression 441 | multiplicative-expression DIV pm-expression 442 | multiplicative-expression MOD pm-expression 443 named-namespace-definition → INLINE-opt NAMESPACE attribute-specifier-seq-opt IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE 444 namespace-alias → IDENTIFIER 445 namespace-alias-definition → NAMESPACE IDENTIFIER EQ qualified-namespace-specifier SEMICOLON 446 namespace-body → declaration-seq-opt 447 namespace-definition → named-namespace-definition 448 | unnamed-namespace-definition 449 | nested-namespace-definition 450 namespace-name → IDENTIFIER 451 | namespace-alias 452 nested-name-specifier → SCOPE 453 | type-name SCOPE 454 | namespace-name SCOPE 455 | decltype-specifier SCOPE 456 | nested-name-specifier IDENTIFIER SCOPE 457 | nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → %empty 459 | nested-name-specifier 460 nested-namespace-definition → NAMESPACE enclosing-namespace-specifier SCOPE INLINE-opt IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE 461 nested-requirement → REQUIRES constraint-expression SEMICOLON 462 new-declarator → ptr-operator new-declarator-opt 463 | noptr-new-declarator 464 new-declarator-opt → %empty 465 | new-declarator 466 new-expression → SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 468 new-initializer → OPEN_PAREN expression-list-opt CLOSE_PAREN 469 | braced-init-list 470 new-initializer-opt → %empty 471 | new-initializer 472 new-placement → OPEN_PAREN expression-list CLOSE_PAREN 473 new-placement-opt → %empty 474 | new-placement 475 new-type-id → type-specifier-seq new-declarator-opt 476 nodeclspec-function-declaration → attribute-specifier-seq-opt declarator SEMICOLON 477 noexcept-expression → NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 478 noexcept-specifier → NOEXCEPT OPEN_PAREN constant-expression CLOSE_PAREN 479 | NOEXCEPT 480 noexcept-specifier-opt → %empty 481 | noexcept-specifier 482 noptr-abstract-declarator → noptr-abstract-declarator-opt parameters-and-qualifiers 483 | noptr-abstract-declarator-opt OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 484 | OPEN_PAREN ptr-abstract-declarator CLOSE_PAREN 485 noptr-abstract-declarator-opt → %empty 486 | noptr-abstract-declarator 487 noptr-abstract-pack-declarator → noptr-abstract-pack-declarator parameters-and-qualifiers 488 | noptr-abstract-pack-declarator OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 489 | ELLIPSIS 490 noptr-declarator → declarator-id attribute-specifier-seq-opt 491 | noptr-declarator parameters-and-qualifiers 492 | noptr-declarator OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 493 | OPEN_PAREN ptr-declarator CLOSE_PAREN 494 noptr-new-declarator → OPEN_SQUARE expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 495 | noptr-new-declarator OPEN_SQUARE constant-expression CLOSE_SQUARE attribute-specifier-seq-opt 496 opaque-enum-declaration → enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt SEMICOLON 497 operator-function-id → OPERATOR overloadable-operator 498 | OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 499 overloadable-operator → NEW 500 | DELETE 501 | NEW OPEN_SQUARE CLOSE_SQUARE 502 | DELETE OPEN_SQUARE CLOSE_SQUARE 503 | CO_AWAIT 504 | OPEN_PAREN CLOSE_PAREN 505 | OPEN_SQUARE CLOSE_SQUARE 506 | DEREF 507 | DEREF_STAR 508 | COMPL 509 | NOT 510 | PLUS 511 | MINUS 512 | MULT 513 | DIV 514 | MOD 515 | XOR 516 | AND 517 | OR 518 | EQ 519 | PLUS_EQ 520 | MINUS_EQ 521 | MULT_EQ 522 | DIV_EQ 523 | MOD_EQ 524 | XOR_EQ 525 | AND_EQ 526 | OR_EQ 527 | EQ_EQ 528 | NOT_EQ 529 | LESS 530 | GREATER 531 | LESS_EQ 532 | GREATER_EQ 533 | SPACESHIP 534 | AND_AND 535 | OR_OR 536 | LSHIFT 537 | RSHIFT 538 | LSHIFT_EQ 539 | RSHIFT_EQ 540 | PLUS_PLUS 541 | MINUS_MINUS 542 | COMMA 543 parameter-declaration → attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 544 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator EQ initializer-clause 545 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 546 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt EQ initializer-clause 547 parameter-declaration-clause → parameter-declaration-list-opt ELLIPSIS-opt 548 | parameter-declaration-list COMMA ELLIPSIS 549 parameter-declaration-list → parameter-declaration 550 | parameter-declaration-list COMMA parameter-declaration 551 parameter-declaration-list-opt → %empty 552 | parameter-declaration-list 553 parameters-and-qualifiers → OPEN_PAREN parameter-declaration-clause CLOSE_PAREN cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt 554 placeholder-type-specifier → type-constraint-opt AUTO 555 | type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → cast-expression 557 | pm-expression DOT_STAR cast-expression 558 | pm-expression DEREF_STAR cast-expression 559 postfix-expression → primary-expression 560 | postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | simple-type-specifier braced-init-list 565 | typename-specifier braced-init-list 566 | postfix-expression DOT TEMPLATE-opt id-expression 567 | postfix-expression DEREF TEMPLATE-opt id-expression 568 | postfix-expression PLUS_PLUS 569 | postfix-expression MINUS_MINUS 570 | DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → LITERAL 577 | THIS 578 | OPEN_PAREN expression CLOSE_PAREN 579 | id-expression 580 | lambda-expression 581 | fold-expression 582 | requires-expression 583 private-module-fragment → MODULE COLON PRIVATE SEMICOLON declaration-seq-opt 584 private-module-fragment-opt → %empty 585 | private-module-fragment 586 ptr-abstract-declarator → noptr-abstract-declarator 587 | ptr-operator ptr-abstract-declarator-opt 588 ptr-abstract-declarator-opt → %empty 589 | ptr-abstract-declarator 590 ptr-declarator → noptr-declarator 591 | ptr-operator ptr-declarator 592 ptr-operator → MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 593 | AND attribute-specifier-seq-opt 594 | AND_AND attribute-specifier-seq-opt 595 | nested-name-specifier MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 596 pure-specifier → EQ '0' 597 pure-specifier-opt → %empty 598 | pure-specifier 599 qualified-id → nested-name-specifier TEMPLATE-opt unqualified-id 600 qualified-namespace-specifier → nested-name-specifier-opt namespace-name 601 ref-qualifier → AND 602 | AND_AND 603 ref-qualifier-opt → %empty 604 | ref-qualifier 605 relational-expression → compare-expression 606 | relational-expression LESS compare-expression 607 | relational-expression GREATER compare-expression 608 | relational-expression LESS_EQ compare-expression 609 | relational-expression GREATER_EQ compare-expression 610 requirement → simple-requirement 611 | type-requirement 612 | compound-requirement 613 | nested-requirement 614 requirement-body → OPEN_BRACE requirement-seq CLOSE_BRACE 615 requirement-parameter-list → OPEN_PAREN parameter-declaration-clause CLOSE_PAREN 616 requirement-parameter-list-opt → %empty 617 | requirement-parameter-list 618 requirement-seq → requirement 619 | requirement-seq requirement 620 requires-clause → REQUIRES constraint-logical-or-expression 621 requires-clause-opt → %empty 622 | requires-clause 623 requires-expression → REQUIRES requirement-parameter-list-opt requirement-body 624 return-type-requirement → DEREF type-constraint 625 return-type-requirement-opt → %empty 626 | return-type-requirement 627 selection-statement → IF CONSTEXPR-opt OPEN_PAREN init-statement-opt condition CLOSE_PAREN statement 628 | IF CONSTEXPR-opt OPEN_PAREN init-statement-opt condition CLOSE_PAREN statement ELSE statement 629 | IF NOT-opt CONSTEVAL compound-statement 630 | IF NOT-opt CONSTEVAL compound-statement ELSE statement 631 | SWITCH OPEN_PAREN init-statement-opt condition CLOSE_PAREN statement 632 shift-expression → additive-expression 633 | shift-expression LSHIFT additive-expression 634 | shift-expression RSHIFT additive-expression 635 simple-capture → IDENTIFIER ELLIPSIS-opt 636 | AND IDENTIFIER ELLIPSIS-opt 637 | THIS 638 | MULT THIS 639 simple-declaration → decl-specifier-seq init-declarator-list-opt SEMICOLON 640 | attribute-specifier-seq decl-specifier-seq init-declarator-list SEMICOLON 641 | attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE initializer SEMICOLON 642 simple-requirement → expression SEMICOLON 643 simple-template-id → template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → nested-name-specifier-opt type-name 645 | nested-name-specifier TEMPLATE simple-template-id 646 | decltype-specifier 647 | placeholder-type-specifier 648 | nested-name-specifier-opt template-name 649 | CHAR 650 | CHAR8_T 651 | CHAR16_T 652 | CHAR32_T 653 | WCHAR_T 654 | BOOL 655 | SHORT 656 | INT 657 | LONG 658 | SIGNED 659 | UNSIGNED 660 | FLOAT 661 | DOUBLE 662 | VOID 663 statement → labeled-statement 664 | attribute-specifier-seq-opt expression-statement 665 | attribute-specifier-seq-opt compound-statement 666 | attribute-specifier-seq-opt selection-statement 667 | attribute-specifier-seq-opt iteration-statement 668 | attribute-specifier-seq-opt jump-statement 669 | declaration-statement 670 | attribute-specifier-seq-opt try-block 671 statement-seq → statement 672 | statement-seq statement 673 statement-seq-opt → %empty 674 | statement-seq 675 static_assert-declaration → STATIC_ASSERT OPEN_PAREN constant-expression CLOSE_PAREN SEMICOLON 676 | STATIC_ASSERT OPEN_PAREN constant-expression COMMA string-literal CLOSE_PAREN SEMICOLON 677 storage-class-specifier → STATIC 678 | THREAD_LOCAL 679 | EXTERN 680 | MUTABLE 681 string-literal → STRING_LITERAL 682 template-argument → constant-expression 683 | type-id 684 | id-expression 685 template-argument-list → template-argument ELLIPSIS-opt 686 | template-argument-list COMMA template-argument ELLIPSIS-opt 687 template-argument-list-opt → %empty 688 | template-argument-list 689 template-declaration → template-head declaration 690 | template-head concept-definition 691 template-head → TEMPLATE LESS template-parameter-list GREATER requires-clause-opt 692 template-id → simple-template-id 693 | operator-function-id LESS template-argument-list-opt GREATER 694 | literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → IDENTIFIER 696 template-parameter → type-parameter 697 | parameter-declaration 698 template-parameter-list → template-parameter 699 | template-parameter-list COMMA template-parameter 700 throw-expression → THROW assignment-expression-opt 701 trailing-return-type → DEREF type-id 702 trailing-return-type-opt → %empty 703 | trailing-return-type 704 translation-unit → declaration-seq-opt 705 | global-module-fragment-opt module-declaration declaration-seq-opt private-module-fragment-opt 706 try-block → TRY compound-statement handler-seq 707 type-constraint → nested-name-specifier-opt concept-name 708 | nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → %empty 710 | type-constraint 711 type-id → type-specifier-seq abstract-declarator-opt 712 type-name → class-name 713 | enum-name 714 | typedef-name 715 type-parameter → type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 716 | type-parameter-key IDENTIFIER-opt EQ type-id 717 | type-constraint ELLIPSIS-opt IDENTIFIER-opt 718 | type-constraint IDENTIFIER-opt EQ type-id 719 | template-head type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 720 | template-head type-parameter-key IDENTIFIER-opt EQ id-expression 721 type-parameter-key → CLASS 722 | TYPENAME 723 type-requirement → TYPENAME nested-name-specifier-opt type-name SEMICOLON 724 type-specifier → simple-type-specifier 725 | elaborated-type-specifier 726 | typename-specifier 727 | cv-qualifier 728 type-specifier-seq → type-specifier attribute-specifier-seq-opt 729 | type-specifier type-specifier-seq 730 typedef-name → IDENTIFIER 731 | simple-template-id 732 typename-specifier → TYPENAME nested-name-specifier IDENTIFIER 733 | TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 734 ud-suffix → IDENTIFIER 735 unary-expression → postfix-expression 736 | unary-operator cast-expression 737 | PLUS_PLUS cast-expression 738 | MINUS_MINUS cast-expression 739 | await-expression 740 | SIZEOF unary-expression 741 | SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | noexcept-expression 745 | new-expression 746 | delete-expression 747 unary-operator → MULT 748 | AND 749 | PLUS 750 | MINUS 751 | NOT 752 | COMPL 753 unnamed-namespace-definition → INLINE-opt NAMESPACE attribute-specifier-seq-opt OPEN_BRACE namespace-body CLOSE_BRACE 754 unqualified-id → IDENTIFIER 755 | operator-function-id 756 | conversion-function-id 757 | literal-operator-id 758 | COMPL type-name 759 | COMPL decltype-specifier 760 | template-id 761 user-defined-string-literal → string-literal ud-suffix 762 using-declaration → USING using-declarator-list SEMICOLON 763 using-declarator → TYPENAME-opt nested-name-specifier unqualified-id 764 using-declarator-list → using-declarator ELLIPSIS-opt 765 | using-declarator-list COMMA using-declarator ELLIPSIS-opt 766 using-directive → attribute-specifier-seq-opt USING NAMESPACE nested-name-specifier-opt namespace-name SEMICOLON 767 using-enum-declaration → USING elaborated-enum-specifier SEMICOLON 768 virt-specifier → OVERRIDE 769 | FINAL 770 virt-specifier-seq → virt-specifier 771 | virt-specifier-seq virt-specifier 772 virt-specifier-seq-opt → %empty 773 | virt-specifier-seq 774 yield-expression → CO_YIELD assignment-expression 775 | CO_YIELD braced-init-list
0 $accept → • translation-unit $end 9 EXTERN-opt → • %empty [TEMPLATE] 10 | • EXTERN 13 INLINE-opt → • %empty [NAMESPACE] 14 | • INLINE 44 alias-declaration → • USING IDENTIFIER attribute-specifier-seq-opt EQ defining-type-id SEMICOLON 49 asm-declaration → • attribute-specifier-seq-opt ASM OPEN_PAREN string-literal CLOSE_PAREN SEMICOLON 71 attribute-declaration → • attribute-specifier-seq SEMICOLON 82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, ELLIPSIS, EXTERN, IDENTIFIER, INLINE, SCOPE, TYPENAME, VIRTUAL, USING, ALIGNAS, OPEN_PAREN, AND, ASM, OPEN_SQUARE, CLASS, STRUCT, UNION, AND_AND, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, MULT, COMPL, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 84 | • attribute-specifier-seq 107 block-declaration → • simple-declaration 108 | • asm-declaration 109 | • namespace-alias-definition 110 | • using-declaration 111 | • using-enum-declaration 112 | • using-directive 113 | • static_assert-declaration 114 | • alias-declaration 115 | • opaque-enum-declaration 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 193 declaration → • block-declaration 194 | • nodeclspec-function-declaration 195 | • function-definition 196 | • template-declaration 197 | • deduction-guide 198 | • explicit-instantiation 199 | • explicit-specialization 200 | • export-declaration 201 | • linkage-specification 202 | • namespace-definition 203 | • empty-declaration 204 | • attribute-declaration 205 | • module-import-declaration 206 declaration-seq → • declaration 207 | • declaration-seq declaration 208 declaration-seq-opt → • %empty [$end] 209 | • declaration-seq 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 215 deduction-guide → • explicit-specifier-opt template-name OPEN_PAREN parameter-declaration-clause CLOSE_PAREN DEREF simple-template-id SEMICOLON 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 233 empty-declaration → • SEMICOLON 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 264 explicit-instantiation → • EXTERN-opt TEMPLATE declaration 265 explicit-specialization → • TEMPLATE LESS GREATER declaration 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 268 explicit-specifier-opt → • %empty [IDENTIFIER] 269 | • explicit-specifier 270 export-declaration → • EXPORT declaration 271 | • EXPORT OPEN_BRACE declaration-seq-opt CLOSE_BRACE 272 | • EXPORT module-import-declaration 327 function-definition → • attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | • attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 332 global-module-fragment → • MODULE SEMICOLON declaration-seq-opt 333 global-module-fragment-opt → • %empty [EXPORT, MODULE] 334 | • global-module-fragment 390 linkage-specification → • EXTERN string-literal OPEN_BRACE declaration-seq-opt CLOSE_BRACE 391 | • EXTERN string-literal declaration 428 module-import-declaration → • IMPORT module-name attribute-specifier-seq-opt SEMICOLON 429 | • IMPORT module-partition attribute-specifier-seq-opt SEMICOLON 430 | • IMPORT header-name attribute-specifier-seq-opt SEMICOLON 443 named-namespace-definition → • INLINE-opt NAMESPACE attribute-specifier-seq-opt IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE 444 namespace-alias → • IDENTIFIER 445 namespace-alias-definition → • NAMESPACE IDENTIFIER EQ qualified-namespace-specifier SEMICOLON 447 namespace-definition → • named-namespace-definition 448 | • unnamed-namespace-definition 449 | • nested-namespace-definition 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 460 nested-namespace-definition → • NAMESPACE enclosing-namespace-specifier SCOPE INLINE-opt IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE 476 nodeclspec-function-declaration → • attribute-specifier-seq-opt declarator SEMICOLON 496 opaque-enum-declaration → • enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt SEMICOLON 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 639 simple-declaration → • decl-specifier-seq init-declarator-list-opt SEMICOLON 640 | • attribute-specifier-seq decl-specifier-seq init-declarator-list SEMICOLON 641 | • attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE initializer SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 675 static_assert-declaration → • STATIC_ASSERT OPEN_PAREN constant-expression CLOSE_PAREN SEMICOLON 676 | • STATIC_ASSERT OPEN_PAREN constant-expression COMMA string-literal CLOSE_PAREN SEMICOLON 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 689 template-declaration → • template-head declaration 690 | • template-head concept-definition 691 template-head → • TEMPLATE LESS template-parameter-list GREATER requires-clause-opt 695 template-name → • IDENTIFIER 704 translation-unit → • declaration-seq-opt 705 | • global-module-fragment-opt module-declaration declaration-seq-opt private-module-fragment-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 753 unnamed-namespace-definition → • INLINE-opt NAMESPACE attribute-specifier-seq-opt OPEN_BRACE namespace-body CLOSE_BRACE 762 using-declaration → • USING using-declarator-list SEMICOLON 766 using-directive → • attribute-specifier-seq-opt USING NAMESPACE nested-name-specifier-opt namespace-name SEMICOLON 767 using-enum-declaration → • USING elaborated-enum-specifier SEMICOLON CONSTEXPR shift, and go to state 1 EXPORT shift, and go to state 2 EXTERN shift, and go to state 3 IDENTIFIER shift, and go to state 4 INLINE shift, and go to state 5 SCOPE shift, and go to state 6 TEMPLATE shift, and go to state 7 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 USING shift, and go to state 10 SEMICOLON shift, and go to state 11 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 MODULE shift, and go to state 24 IMPORT shift, and go to state 25 NAMESPACE shift, and go to state 26 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC_ASSERT shift, and go to state 41 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 $end reduce using rule 208 (declaration-seq-opt) CONSTEXPR [reduce using rule 83 (attribute-specifier-seq-opt)] EXPORT [reduce using rule 333 (global-module-fragment-opt)] EXTERN [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] INLINE [reduce using rule 83 (attribute-specifier-seq-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] TEMPLATE [reduce using rule 9 (EXTERN-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] VIRTUAL [reduce using rule 83 (attribute-specifier-seq-opt)] USING [reduce using rule 83 (attribute-specifier-seq-opt)] CLASS [reduce using rule 83 (attribute-specifier-seq-opt)] STRUCT [reduce using rule 83 (attribute-specifier-seq-opt)] UNION [reduce using rule 83 (attribute-specifier-seq-opt)] CONST [reduce using rule 83 (attribute-specifier-seq-opt)] VOLATILE [reduce using rule 83 (attribute-specifier-seq-opt)] FRIEND [reduce using rule 83 (attribute-specifier-seq-opt)] TYPEDEF [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTEVAL [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTINIT [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] ENUM [reduce using rule 83 (attribute-specifier-seq-opt)] EXPLICIT [reduce using rule 83 (attribute-specifier-seq-opt)] MODULE [reduce using rule 333 (global-module-fragment-opt)] NAMESPACE [reduce using rule 13 (INLINE-opt)] AUTO reduce using rule 83 (attribute-specifier-seq-opt) AUTO [reduce using rule 709 (type-constraint-opt)] CHAR [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR8_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR16_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR32_T [reduce using rule 83 (attribute-specifier-seq-opt)] WCHAR_T [reduce using rule 83 (attribute-specifier-seq-opt)] BOOL [reduce using rule 83 (attribute-specifier-seq-opt)] SHORT [reduce using rule 83 (attribute-specifier-seq-opt)] INT [reduce using rule 83 (attribute-specifier-seq-opt)] LONG [reduce using rule 83 (attribute-specifier-seq-opt)] SIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] UNSIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] FLOAT [reduce using rule 83 (attribute-specifier-seq-opt)] DOUBLE [reduce using rule 83 (attribute-specifier-seq-opt)] VOID [reduce using rule 83 (attribute-specifier-seq-opt)] STATIC [reduce using rule 83 (attribute-specifier-seq-opt)] THREAD_LOCAL [reduce using rule 83 (attribute-specifier-seq-opt)] MUTABLE [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 60 declaration-seq go to state 61 declaration-seq-opt go to state 62 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 global-module-fragment go to state 80 global-module-fragment-opt go to state 81 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 translation-unit go to state 103 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113
185 decl-specifier → CONSTEXPR • $default reduce using rule 185 (decl-specifier)
9 EXTERN-opt → • %empty [TEMPLATE] 10 | • EXTERN 13 INLINE-opt → • %empty [NAMESPACE] 14 | • INLINE 44 alias-declaration → • USING IDENTIFIER attribute-specifier-seq-opt EQ defining-type-id SEMICOLON 49 asm-declaration → • attribute-specifier-seq-opt ASM OPEN_PAREN string-literal CLOSE_PAREN SEMICOLON 71 attribute-declaration → • attribute-specifier-seq SEMICOLON 82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, ELLIPSIS, EXTERN, IDENTIFIER, INLINE, SCOPE, TYPENAME, VIRTUAL, USING, ALIGNAS, OPEN_PAREN, AND, ASM, OPEN_SQUARE, CLASS, STRUCT, UNION, AND_AND, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, MULT, COMPL, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 84 | • attribute-specifier-seq 107 block-declaration → • simple-declaration 108 | • asm-declaration 109 | • namespace-alias-definition 110 | • using-declaration 111 | • using-enum-declaration 112 | • using-directive 113 | • static_assert-declaration 114 | • alias-declaration 115 | • opaque-enum-declaration 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 193 declaration → • block-declaration 194 | • nodeclspec-function-declaration 195 | • function-definition 196 | • template-declaration 197 | • deduction-guide 198 | • explicit-instantiation 199 | • explicit-specialization 200 | • export-declaration 201 | • linkage-specification 202 | • namespace-definition 203 | • empty-declaration 204 | • attribute-declaration 205 | • module-import-declaration 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 215 deduction-guide → • explicit-specifier-opt template-name OPEN_PAREN parameter-declaration-clause CLOSE_PAREN DEREF simple-template-id SEMICOLON 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 233 empty-declaration → • SEMICOLON 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 264 explicit-instantiation → • EXTERN-opt TEMPLATE declaration 265 explicit-specialization → • TEMPLATE LESS GREATER declaration 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 268 explicit-specifier-opt → • %empty [IDENTIFIER] 269 | • explicit-specifier 270 export-declaration → • EXPORT declaration 270 | EXPORT • declaration 271 | • EXPORT OPEN_BRACE declaration-seq-opt CLOSE_BRACE 271 | EXPORT • OPEN_BRACE declaration-seq-opt CLOSE_BRACE 272 | • EXPORT module-import-declaration 272 | EXPORT • module-import-declaration 327 function-definition → • attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | • attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 390 linkage-specification → • EXTERN string-literal OPEN_BRACE declaration-seq-opt CLOSE_BRACE 391 | • EXTERN string-literal declaration 428 module-import-declaration → • IMPORT module-name attribute-specifier-seq-opt SEMICOLON 429 | • IMPORT module-partition attribute-specifier-seq-opt SEMICOLON 430 | • IMPORT header-name attribute-specifier-seq-opt SEMICOLON 443 named-namespace-definition → • INLINE-opt NAMESPACE attribute-specifier-seq-opt IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE 444 namespace-alias → • IDENTIFIER 445 namespace-alias-definition → • NAMESPACE IDENTIFIER EQ qualified-namespace-specifier SEMICOLON 447 namespace-definition → • named-namespace-definition 448 | • unnamed-namespace-definition 449 | • nested-namespace-definition 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 460 nested-namespace-definition → • NAMESPACE enclosing-namespace-specifier SCOPE INLINE-opt IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE 476 nodeclspec-function-declaration → • attribute-specifier-seq-opt declarator SEMICOLON 496 opaque-enum-declaration → • enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt SEMICOLON 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 639 simple-declaration → • decl-specifier-seq init-declarator-list-opt SEMICOLON 640 | • attribute-specifier-seq decl-specifier-seq init-declarator-list SEMICOLON 641 | • attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE initializer SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 675 static_assert-declaration → • STATIC_ASSERT OPEN_PAREN constant-expression CLOSE_PAREN SEMICOLON 676 | • STATIC_ASSERT OPEN_PAREN constant-expression COMMA string-literal CLOSE_PAREN SEMICOLON 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 689 template-declaration → • template-head declaration 690 | • template-head concept-definition 691 template-head → • TEMPLATE LESS template-parameter-list GREATER requires-clause-opt 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 753 unnamed-namespace-definition → • INLINE-opt NAMESPACE attribute-specifier-seq-opt OPEN_BRACE namespace-body CLOSE_BRACE 762 using-declaration → • USING using-declarator-list SEMICOLON 766 using-directive → • attribute-specifier-seq-opt USING NAMESPACE nested-name-specifier-opt namespace-name SEMICOLON 767 using-enum-declaration → • USING elaborated-enum-specifier SEMICOLON CONSTEXPR shift, and go to state 1 EXPORT shift, and go to state 2 EXTERN shift, and go to state 3 IDENTIFIER shift, and go to state 4 INLINE shift, and go to state 5 SCOPE shift, and go to state 6 TEMPLATE shift, and go to state 7 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 USING shift, and go to state 10 SEMICOLON shift, and go to state 11 OPEN_BRACE shift, and go to state 114 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 IMPORT shift, and go to state 25 NAMESPACE shift, and go to state 26 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC_ASSERT shift, and go to state 41 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 CONSTEXPR [reduce using rule 83 (attribute-specifier-seq-opt)] EXTERN [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] INLINE [reduce using rule 83 (attribute-specifier-seq-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] TEMPLATE [reduce using rule 9 (EXTERN-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] VIRTUAL [reduce using rule 83 (attribute-specifier-seq-opt)] USING [reduce using rule 83 (attribute-specifier-seq-opt)] CLASS [reduce using rule 83 (attribute-specifier-seq-opt)] STRUCT [reduce using rule 83 (attribute-specifier-seq-opt)] UNION [reduce using rule 83 (attribute-specifier-seq-opt)] CONST [reduce using rule 83 (attribute-specifier-seq-opt)] VOLATILE [reduce using rule 83 (attribute-specifier-seq-opt)] FRIEND [reduce using rule 83 (attribute-specifier-seq-opt)] TYPEDEF [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTEVAL [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTINIT [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] ENUM [reduce using rule 83 (attribute-specifier-seq-opt)] EXPLICIT [reduce using rule 83 (attribute-specifier-seq-opt)] NAMESPACE [reduce using rule 13 (INLINE-opt)] AUTO reduce using rule 83 (attribute-specifier-seq-opt) AUTO [reduce using rule 709 (type-constraint-opt)] CHAR [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR8_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR16_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR32_T [reduce using rule 83 (attribute-specifier-seq-opt)] WCHAR_T [reduce using rule 83 (attribute-specifier-seq-opt)] BOOL [reduce using rule 83 (attribute-specifier-seq-opt)] SHORT [reduce using rule 83 (attribute-specifier-seq-opt)] INT [reduce using rule 83 (attribute-specifier-seq-opt)] LONG [reduce using rule 83 (attribute-specifier-seq-opt)] SIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] UNSIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] FLOAT [reduce using rule 83 (attribute-specifier-seq-opt)] DOUBLE [reduce using rule 83 (attribute-specifier-seq-opt)] VOID [reduce using rule 83 (attribute-specifier-seq-opt)] STATIC [reduce using rule 83 (attribute-specifier-seq-opt)] THREAD_LOCAL [reduce using rule 83 (attribute-specifier-seq-opt)] MUTABLE [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 115 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 116 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113
10 EXTERN-opt → EXTERN • [TEMPLATE] 390 linkage-specification → EXTERN • string-literal OPEN_BRACE declaration-seq-opt CLOSE_BRACE 391 | EXTERN • string-literal declaration 679 storage-class-specifier → EXTERN • [CONSTEXPR, ELLIPSIS, EXTERN, IDENTIFIER, INLINE, SCOPE, TYPENAME, VIRTUAL, SEMICOLON, ALIGNAS, OPEN_PAREN, AND, OPEN_SQUARE, CLASS, STRUCT, UNION, AND_AND, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, MULT, COMPL, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 681 string-literal → • STRING_LITERAL STRING_LITERAL shift, and go to state 117 TEMPLATE reduce using rule 10 (EXTERN-opt) $default reduce using rule 679 (storage-class-specifier) string-literal go to state 118
137 class-name → IDENTIFIER • [SCOPE] 246 enum-name → IDENTIFIER • [SCOPE] 444 namespace-alias → IDENTIFIER • [SCOPE] 450 namespace-name → IDENTIFIER • [SCOPE] 695 template-name → IDENTIFIER • [LESS] 730 typedef-name → IDENTIFIER • [SCOPE] SCOPE reduce using rule 137 (class-name) SCOPE [reduce using rule 246 (enum-name)] SCOPE [reduce using rule 444 (namespace-alias)] SCOPE [reduce using rule 450 (namespace-name)] SCOPE [reduce using rule 730 (typedef-name)] LESS reduce using rule 695 (template-name) $default reduce using rule 137 (class-name)
14 INLINE-opt → INLINE • [NAMESPACE] 188 decl-specifier → INLINE • [CONSTEXPR, ELLIPSIS, EXTERN, IDENTIFIER, INLINE, SCOPE, TYPENAME, VIRTUAL, SEMICOLON, ALIGNAS, OPEN_PAREN, AND, OPEN_SQUARE, CLASS, STRUCT, UNION, AND_AND, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, MULT, COMPL, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] NAMESPACE reduce using rule 14 (INLINE-opt) $default reduce using rule 188 (decl-specifier)
452 nested-name-specifier → SCOPE • $default reduce using rule 452 (nested-name-specifier)
265 explicit-specialization → TEMPLATE • LESS GREATER declaration 691 template-head → TEMPLATE • LESS template-parameter-list GREATER requires-clause-opt LESS shift, and go to state 119
137 class-name → • IDENTIFIER 138 | • simple-template-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → TYPENAME • nested-name-specifier IDENTIFIER 733 | TYPENAME • nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 DECLTYPE shift, and go to state 21 class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 121 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
329 function-specifier → VIRTUAL • $default reduce using rule 329 (function-specifier)
25 TYPENAME-opt → • %empty [IDENTIFIER, SCOPE, DECLTYPE] 26 | • TYPENAME 44 alias-declaration → USING • IDENTIFIER attribute-specifier-seq-opt EQ defining-type-id SEMICOLON 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 762 using-declaration → USING • using-declarator-list SEMICOLON 763 using-declarator → • TYPENAME-opt nested-name-specifier unqualified-id 764 using-declarator-list → • using-declarator ELLIPSIS-opt 765 | • using-declarator-list COMMA using-declarator ELLIPSIS-opt 767 using-enum-declaration → USING • elaborated-enum-specifier SEMICOLON IDENTIFIER shift, and go to state 122 TYPENAME shift, and go to state 123 ENUM shift, and go to state 124 IDENTIFIER [reduce using rule 25 (TYPENAME-opt)] $default reduce using rule 25 (TYPENAME-opt) TYPENAME-opt go to state 125 elaborated-enum-specifier go to state 126 using-declarator go to state 127 using-declarator-list go to state 128
233 empty-declaration → SEMICOLON • $default reduce using rule 233 (empty-declaration)
134 class-key → CLASS • $default reduce using rule 134 (class-key)
135 class-key → STRUCT • $default reduce using rule 135 (class-key)
136 class-key → UNION • $default reduce using rule 136 (class-key)
175 cv-qualifier → CONST • $default reduce using rule 175 (cv-qualifier)
176 cv-qualifier → VOLATILE • $default reduce using rule 176 (cv-qualifier)
183 decl-specifier → FRIEND • $default reduce using rule 183 (decl-specifier)
184 decl-specifier → TYPEDEF • $default reduce using rule 184 (decl-specifier)
186 decl-specifier → CONSTEVAL • $default reduce using rule 186 (decl-specifier)
187 decl-specifier → CONSTINIT • $default reduce using rule 187 (decl-specifier)
214 decltype-specifier → DECLTYPE • OPEN_PAREN expression CLOSE_PAREN OPEN_PAREN shift, and go to state 129
137 class-name → • IDENTIFIER 138 | • simple-template-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 228 elaborated-enum-specifier → ENUM • nested-name-specifier-opt IDENTIFIER 243 enum-key → ENUM • [IDENTIFIER, SCOPE, ALIGNAS, OPEN_SQUARE, COLON, OPEN_BRACE, DECLTYPE] 244 | ENUM • CLASS 245 | ENUM • STRUCT 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 CLASS shift, and go to state 130 STRUCT shift, and go to state 131 DECLTYPE shift, and go to state 21 IDENTIFIER [reduce using rule 243 (enum-key)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] SCOPE [reduce using rule 243 (enum-key)] DECLTYPE [reduce using rule 243 (enum-key)] $default reduce using rule 243 (enum-key) class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 132 nested-name-specifier-opt go to state 133 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
266 explicit-specifier → EXPLICIT • OPEN_PAREN constant-expression CLOSE_PAREN 267 | EXPLICIT • [COMMA, CONSTEXPR, ELLIPSIS, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TYPENAME, VIRTUAL, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, OPEN_SQUARE, COLON, OPEN_BRACE, CLASS, STRUCT, UNION, AND_AND, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, ENUM, GREATER, EXPLICIT, MULT, REQUIRES, COMPL, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] OPEN_PAREN shift, and go to state 134 OPEN_PAREN [reduce using rule 267 (explicit-specifier)] $default reduce using rule 267 (explicit-specifier)
332 global-module-fragment → MODULE • SEMICOLON declaration-seq-opt SEMICOLON shift, and go to state 135
339 header-name → • HEADER_NAME 428 module-import-declaration → IMPORT • module-name attribute-specifier-seq-opt SEMICOLON 429 | IMPORT • module-partition attribute-specifier-seq-opt SEMICOLON 430 | IMPORT • header-name attribute-specifier-seq-opt SEMICOLON 431 module-name → • module-name-qualifier-opt IDENTIFIER 432 module-name-qualifier → • IDENTIFIER DOT 433 | • module-name-qualifier IDENTIFIER DOT 434 module-name-qualifier-opt → • %empty [IDENTIFIER] 435 | • module-name-qualifier 436 module-partition → • COLON module-name-qualifier-opt IDENTIFIER IDENTIFIER shift, and go to state 136 COLON shift, and go to state 137 HEADER_NAME shift, and go to state 138 IDENTIFIER [reduce using rule 434 (module-name-qualifier-opt)] header-name go to state 139 module-name go to state 140 module-name-qualifier go to state 141 module-name-qualifier-opt go to state 142 module-partition go to state 143
234 enclosing-namespace-specifier → • IDENTIFIER 235 | • enclosing-namespace-specifier SCOPE INLINE-opt IDENTIFIER 445 namespace-alias-definition → NAMESPACE • IDENTIFIER EQ qualified-namespace-specifier SEMICOLON 460 nested-namespace-definition → NAMESPACE • enclosing-namespace-specifier SCOPE INLINE-opt IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE IDENTIFIER shift, and go to state 144 enclosing-namespace-specifier go to state 145
649 simple-type-specifier → CHAR • $default reduce using rule 649 (simple-type-specifier)
650 simple-type-specifier → CHAR8_T • $default reduce using rule 650 (simple-type-specifier)
651 simple-type-specifier → CHAR16_T • $default reduce using rule 651 (simple-type-specifier)
652 simple-type-specifier → CHAR32_T • $default reduce using rule 652 (simple-type-specifier)
653 simple-type-specifier → WCHAR_T • $default reduce using rule 653 (simple-type-specifier)
654 simple-type-specifier → BOOL • $default reduce using rule 654 (simple-type-specifier)
655 simple-type-specifier → SHORT • $default reduce using rule 655 (simple-type-specifier)
656 simple-type-specifier → INT • $default reduce using rule 656 (simple-type-specifier)
657 simple-type-specifier → LONG • $default reduce using rule 657 (simple-type-specifier)
658 simple-type-specifier → SIGNED • $default reduce using rule 658 (simple-type-specifier)
659 simple-type-specifier → UNSIGNED • $default reduce using rule 659 (simple-type-specifier)
660 simple-type-specifier → FLOAT • $default reduce using rule 660 (simple-type-specifier)
661 simple-type-specifier → DOUBLE • $default reduce using rule 661 (simple-type-specifier)
662 simple-type-specifier → VOID • $default reduce using rule 662 (simple-type-specifier)
675 static_assert-declaration → STATIC_ASSERT • OPEN_PAREN constant-expression CLOSE_PAREN SEMICOLON 676 | STATIC_ASSERT • OPEN_PAREN constant-expression COMMA string-literal CLOSE_PAREN SEMICOLON OPEN_PAREN shift, and go to state 146
677 storage-class-specifier → STATIC • $default reduce using rule 677 (storage-class-specifier)
678 storage-class-specifier → THREAD_LOCAL • $default reduce using rule 678 (storage-class-specifier)
680 storage-class-specifier → MUTABLE • $default reduce using rule 680 (storage-class-specifier)
264 explicit-instantiation → EXTERN-opt • TEMPLATE declaration TEMPLATE shift, and go to state 147
443 named-namespace-definition → INLINE-opt • NAMESPACE attribute-specifier-seq-opt IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE 753 unnamed-namespace-definition → INLINE-opt • NAMESPACE attribute-specifier-seq-opt OPEN_BRACE namespace-body CLOSE_BRACE NAMESPACE shift, and go to state 148
114 block-declaration → alias-declaration • $default reduce using rule 114 (block-declaration)
108 block-declaration → asm-declaration • $default reduce using rule 108 (block-declaration)
204 declaration → attribute-declaration • $default reduce using rule 204 (declaration)
71 attribute-declaration → attribute-specifier-seq • SEMICOLON 84 attribute-specifier-seq-opt → attribute-specifier-seq • [CONSTEXPR, ELLIPSIS, EXTERN, IDENTIFIER, INLINE, SCOPE, TYPENAME, VIRTUAL, USING, ALIGNAS, OPEN_PAREN, AND, ASM, OPEN_SQUARE, CLASS, STRUCT, UNION, AND_AND, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, MULT, COMPL, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 640 simple-declaration → attribute-specifier-seq • decl-specifier-seq init-declarator-list SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id CONSTEXPR shift, and go to state 1 EXTERN shift, and go to state 149 IDENTIFIER shift, and go to state 4 INLINE shift, and go to state 150 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 SEMICOLON shift, and go to state 151 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 CONSTEXPR [reduce using rule 84 (attribute-specifier-seq-opt)] EXTERN [reduce using rule 84 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 84 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] INLINE [reduce using rule 84 (attribute-specifier-seq-opt)] SCOPE [reduce using rule 84 (attribute-specifier-seq-opt)] TYPENAME [reduce using rule 84 (attribute-specifier-seq-opt)] VIRTUAL [reduce using rule 84 (attribute-specifier-seq-opt)] CLASS [reduce using rule 84 (attribute-specifier-seq-opt)] STRUCT [reduce using rule 84 (attribute-specifier-seq-opt)] UNION [reduce using rule 84 (attribute-specifier-seq-opt)] CONST [reduce using rule 84 (attribute-specifier-seq-opt)] VOLATILE [reduce using rule 84 (attribute-specifier-seq-opt)] FRIEND [reduce using rule 84 (attribute-specifier-seq-opt)] TYPEDEF [reduce using rule 84 (attribute-specifier-seq-opt)] CONSTEVAL [reduce using rule 84 (attribute-specifier-seq-opt)] CONSTINIT [reduce using rule 84 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 84 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] ENUM [reduce using rule 84 (attribute-specifier-seq-opt)] EXPLICIT [reduce using rule 84 (attribute-specifier-seq-opt)] AUTO reduce using rule 84 (attribute-specifier-seq-opt) AUTO [reduce using rule 709 (type-constraint-opt)] CHAR [reduce using rule 84 (attribute-specifier-seq-opt)] CHAR8_T [reduce using rule 84 (attribute-specifier-seq-opt)] CHAR16_T [reduce using rule 84 (attribute-specifier-seq-opt)] CHAR32_T [reduce using rule 84 (attribute-specifier-seq-opt)] WCHAR_T [reduce using rule 84 (attribute-specifier-seq-opt)] BOOL [reduce using rule 84 (attribute-specifier-seq-opt)] SHORT [reduce using rule 84 (attribute-specifier-seq-opt)] INT [reduce using rule 84 (attribute-specifier-seq-opt)] LONG [reduce using rule 84 (attribute-specifier-seq-opt)] SIGNED [reduce using rule 84 (attribute-specifier-seq-opt)] UNSIGNED [reduce using rule 84 (attribute-specifier-seq-opt)] FLOAT [reduce using rule 84 (attribute-specifier-seq-opt)] DOUBLE [reduce using rule 84 (attribute-specifier-seq-opt)] VOID [reduce using rule 84 (attribute-specifier-seq-opt)] STATIC [reduce using rule 84 (attribute-specifier-seq-opt)] THREAD_LOCAL [reduce using rule 84 (attribute-specifier-seq-opt)] MUTABLE [reduce using rule 84 (attribute-specifier-seq-opt)] $default reduce using rule 84 (attribute-specifier-seq-opt) class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 152 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 153 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109
5 ELLIPSIS-opt → • %empty [IDENTIFIER, SCOPE, OPERATOR, DECLTYPE, COMPL] 6 | • ELLIPSIS 45 alignment-specifier → • ALIGNAS OPEN_PAREN type-id ELLIPSIS-opt CLOSE_PAREN 46 | • ALIGNAS OPEN_PAREN constant-expression ELLIPSIS-opt CLOSE_PAREN 49 asm-declaration → attribute-specifier-seq-opt • ASM OPEN_PAREN string-literal CLOSE_PAREN SEMICOLON 80 attribute-specifier → • OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE 81 | • alignment-specifier 82 attribute-specifier-seq → attribute-specifier-seq-opt • attribute-specifier 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 191 decl-specifier-seq-opt → • %empty [ELLIPSIS, IDENTIFIER, SCOPE, OPEN_PAREN, AND, AND_AND, OPERATOR, DECLTYPE, MULT, COMPL] 192 | • decl-specifier-seq 211 declarator → • ptr-declarator 212 | • noptr-declarator parameters-and-qualifiers trailing-return-type 213 declarator-id → • ELLIPSIS-opt id-expression 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 327 function-definition → attribute-specifier-seq-opt • decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt • decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 476 nodeclspec-function-declaration → attribute-specifier-seq-opt • declarator SEMICOLON 490 noptr-declarator → • declarator-id attribute-specifier-seq-opt 491 | • noptr-declarator parameters-and-qualifiers 492 | • noptr-declarator OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 493 | • OPEN_PAREN ptr-declarator CLOSE_PAREN 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 590 ptr-declarator → • noptr-declarator 591 | • ptr-operator ptr-declarator 592 ptr-operator → • MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 593 | • AND attribute-specifier-seq-opt 594 | • AND_AND attribute-specifier-seq-opt 595 | • nested-name-specifier MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 641 simple-declaration → attribute-specifier-seq-opt • decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE initializer SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 766 using-directive → attribute-specifier-seq-opt • USING NAMESPACE nested-name-specifier-opt namespace-name SEMICOLON CONSTEXPR shift, and go to state 1 ELLIPSIS shift, and go to state 155 EXTERN shift, and go to state 149 IDENTIFIER shift, and go to state 4 INLINE shift, and go to state 150 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 USING shift, and go to state 156 ALIGNAS shift, and go to state 157 OPEN_PAREN shift, and go to state 158 AND shift, and go to state 159 ASM shift, and go to state 160 OPEN_SQUARE shift, and go to state 161 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 AND_AND shift, and go to state 162 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 MULT shift, and go to state 163 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 ELLIPSIS [reduce using rule 191 (decl-specifier-seq-opt)] IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] IDENTIFIER [reduce using rule 191 (decl-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] SCOPE [reduce using rule 5 (ELLIPSIS-opt)] SCOPE [reduce using rule 191 (decl-specifier-seq-opt)] OPEN_PAREN [reduce using rule 191 (decl-specifier-seq-opt)] AND [reduce using rule 191 (decl-specifier-seq-opt)] AND_AND [reduce using rule 191 (decl-specifier-seq-opt)] OPERATOR reduce using rule 5 (ELLIPSIS-opt) OPERATOR [reduce using rule 191 (decl-specifier-seq-opt)] DECLTYPE [reduce using rule 5 (ELLIPSIS-opt)] DECLTYPE [reduce using rule 191 (decl-specifier-seq-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] MULT [reduce using rule 191 (decl-specifier-seq-opt)] COMPL reduce using rule 5 (ELLIPSIS-opt) COMPL [reduce using rule 191 (decl-specifier-seq-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 164 alignment-specifier go to state 165 attribute-specifier go to state 166 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 167 decl-specifier-seq-opt go to state 168 declarator go to state 169 declarator-id go to state 170 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 153 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 171 nested-name-specifier-opt go to state 90 noptr-declarator go to state 172 placeholder-type-specifier go to state 94 ptr-declarator go to state 173 ptr-operator go to state 174 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109
193 declaration → block-declaration • $default reduce using rule 193 (declaration)
142 class-specifier → class-head • OPEN_BRACE member-specification-opt CLOSE_BRACE OPEN_BRACE shift, and go to state 175
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [IDENTIFIER, SCOPE, ALIGNAS, OPEN_SQUARE, COLON, OPEN_BRACE, DECLTYPE] 84 | • attribute-specifier-seq 131 class-head → class-key • attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key • attribute-specifier-seq-opt base-clause-opt 137 class-name → • IDENTIFIER 138 | • simple-template-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 229 elaborated-type-specifier → class-key • attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key • simple-template-id 231 | class-key • nested-name-specifier TEMPLATE-opt simple-template-id 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 DECLTYPE shift, and go to state 21 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 177 class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 178 simple-template-id go to state 179 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
712 type-name → class-name • $default reduce using rule 712 (type-name)
218 defining-type-specifier → class-specifier • $default reduce using rule 218 (defining-type-specifier)
727 type-specifier → cv-qualifier • $default reduce using rule 727 (type-specifier)
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [COMMA, ELLIPSIS, IDENTIFIER, NOEXCEPT, SCOPE, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, OPEN_SQUARE, COLON, OPEN_BRACE, AND_AND, OPERATOR, DECLTYPE, DEREF, GREATER, MULT, REQUIRES, COMPL] 84 | • attribute-specifier-seq 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 189 | decl-specifier • attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 190 | decl-specifier • decl-specifier-seq 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id CONSTEXPR shift, and go to state 1 EXTERN shift, and go to state 149 IDENTIFIER shift, and go to state 4 INLINE shift, and go to state 150 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 180 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 181 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 153 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109
5 ELLIPSIS-opt → • %empty [IDENTIFIER, SCOPE, OPERATOR, DECLTYPE, COMPL] 6 | • ELLIPSIS 137 class-name → • IDENTIFIER 138 | • simple-template-id 211 declarator → • ptr-declarator 212 | • noptr-declarator parameters-and-qualifiers trailing-return-type 213 declarator-id → • ELLIPSIS-opt id-expression 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 348 init-declarator → • declarator initializer-opt 349 | • declarator requires-clause 350 init-declarator-list → • init-declarator 351 | • init-declarator-list COMMA init-declarator 352 init-declarator-list-opt → • %empty [SEMICOLON] 353 | • init-declarator-list 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 490 noptr-declarator → • declarator-id attribute-specifier-seq-opt 491 | • noptr-declarator parameters-and-qualifiers 492 | • noptr-declarator OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 493 | • OPEN_PAREN ptr-declarator CLOSE_PAREN 590 ptr-declarator → • noptr-declarator 591 | • ptr-operator ptr-declarator 592 ptr-operator → • MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 593 | • AND attribute-specifier-seq-opt 594 | • AND_AND attribute-specifier-seq-opt 595 | • nested-name-specifier MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 639 simple-declaration → decl-specifier-seq • init-declarator-list-opt SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id ELLIPSIS shift, and go to state 155 IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 OPEN_PAREN shift, and go to state 158 AND shift, and go to state 159 AND_AND shift, and go to state 162 DECLTYPE shift, and go to state 21 MULT shift, and go to state 163 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] SCOPE [reduce using rule 5 (ELLIPSIS-opt)] SEMICOLON reduce using rule 352 (init-declarator-list-opt) DECLTYPE [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 164 class-name go to state 55 declarator go to state 182 declarator-id go to state 170 decltype-specifier go to state 120 enum-name go to state 71 init-declarator go to state 183 init-declarator-list go to state 184 init-declarator-list-opt go to state 185 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 noptr-declarator go to state 172 ptr-declarator go to state 173 ptr-operator go to state 174 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
206 declaration-seq → declaration • $default reduce using rule 206 (declaration-seq)
9 EXTERN-opt → • %empty [TEMPLATE] 10 | • EXTERN 13 INLINE-opt → • %empty [NAMESPACE] 14 | • INLINE 44 alias-declaration → • USING IDENTIFIER attribute-specifier-seq-opt EQ defining-type-id SEMICOLON 49 asm-declaration → • attribute-specifier-seq-opt ASM OPEN_PAREN string-literal CLOSE_PAREN SEMICOLON 71 attribute-declaration → • attribute-specifier-seq SEMICOLON 82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, ELLIPSIS, EXTERN, IDENTIFIER, INLINE, SCOPE, TYPENAME, VIRTUAL, USING, ALIGNAS, OPEN_PAREN, AND, ASM, OPEN_SQUARE, CLASS, STRUCT, UNION, AND_AND, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, MULT, COMPL, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 84 | • attribute-specifier-seq 107 block-declaration → • simple-declaration 108 | • asm-declaration 109 | • namespace-alias-definition 110 | • using-declaration 111 | • using-enum-declaration 112 | • using-directive 113 | • static_assert-declaration 114 | • alias-declaration 115 | • opaque-enum-declaration 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 193 declaration → • block-declaration 194 | • nodeclspec-function-declaration 195 | • function-definition 196 | • template-declaration 197 | • deduction-guide 198 | • explicit-instantiation 199 | • explicit-specialization 200 | • export-declaration 201 | • linkage-specification 202 | • namespace-definition 203 | • empty-declaration 204 | • attribute-declaration 205 | • module-import-declaration 207 declaration-seq → declaration-seq • declaration 209 declaration-seq-opt → declaration-seq • [$end, EXPORT, CLOSE_BRACE, MODULE] 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 215 deduction-guide → • explicit-specifier-opt template-name OPEN_PAREN parameter-declaration-clause CLOSE_PAREN DEREF simple-template-id SEMICOLON 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 233 empty-declaration → • SEMICOLON 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 264 explicit-instantiation → • EXTERN-opt TEMPLATE declaration 265 explicit-specialization → • TEMPLATE LESS GREATER declaration 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 268 explicit-specifier-opt → • %empty [IDENTIFIER] 269 | • explicit-specifier 270 export-declaration → • EXPORT declaration 271 | • EXPORT OPEN_BRACE declaration-seq-opt CLOSE_BRACE 272 | • EXPORT module-import-declaration 327 function-definition → • attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | • attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 390 linkage-specification → • EXTERN string-literal OPEN_BRACE declaration-seq-opt CLOSE_BRACE 391 | • EXTERN string-literal declaration 428 module-import-declaration → • IMPORT module-name attribute-specifier-seq-opt SEMICOLON 429 | • IMPORT module-partition attribute-specifier-seq-opt SEMICOLON 430 | • IMPORT header-name attribute-specifier-seq-opt SEMICOLON 443 named-namespace-definition → • INLINE-opt NAMESPACE attribute-specifier-seq-opt IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE 444 namespace-alias → • IDENTIFIER 445 namespace-alias-definition → • NAMESPACE IDENTIFIER EQ qualified-namespace-specifier SEMICOLON 447 namespace-definition → • named-namespace-definition 448 | • unnamed-namespace-definition 449 | • nested-namespace-definition 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 460 nested-namespace-definition → • NAMESPACE enclosing-namespace-specifier SCOPE INLINE-opt IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE 476 nodeclspec-function-declaration → • attribute-specifier-seq-opt declarator SEMICOLON 496 opaque-enum-declaration → • enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt SEMICOLON 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 639 simple-declaration → • decl-specifier-seq init-declarator-list-opt SEMICOLON 640 | • attribute-specifier-seq decl-specifier-seq init-declarator-list SEMICOLON 641 | • attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE initializer SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 675 static_assert-declaration → • STATIC_ASSERT OPEN_PAREN constant-expression CLOSE_PAREN SEMICOLON 676 | • STATIC_ASSERT OPEN_PAREN constant-expression COMMA string-literal CLOSE_PAREN SEMICOLON 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 689 template-declaration → • template-head declaration 690 | • template-head concept-definition 691 template-head → • TEMPLATE LESS template-parameter-list GREATER requires-clause-opt 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 753 unnamed-namespace-definition → • INLINE-opt NAMESPACE attribute-specifier-seq-opt OPEN_BRACE namespace-body CLOSE_BRACE 762 using-declaration → • USING using-declarator-list SEMICOLON 766 using-directive → • attribute-specifier-seq-opt USING NAMESPACE nested-name-specifier-opt namespace-name SEMICOLON 767 using-enum-declaration → • USING elaborated-enum-specifier SEMICOLON CONSTEXPR shift, and go to state 1 EXPORT shift, and go to state 2 EXTERN shift, and go to state 3 IDENTIFIER shift, and go to state 4 INLINE shift, and go to state 5 SCOPE shift, and go to state 6 TEMPLATE shift, and go to state 7 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 USING shift, and go to state 10 SEMICOLON shift, and go to state 11 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 IMPORT shift, and go to state 25 NAMESPACE shift, and go to state 26 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC_ASSERT shift, and go to state 41 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 $end reduce using rule 209 (declaration-seq-opt) CONSTEXPR [reduce using rule 83 (attribute-specifier-seq-opt)] EXPORT [reduce using rule 209 (declaration-seq-opt)] EXTERN [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] INLINE [reduce using rule 83 (attribute-specifier-seq-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] TEMPLATE [reduce using rule 9 (EXTERN-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] VIRTUAL [reduce using rule 83 (attribute-specifier-seq-opt)] USING [reduce using rule 83 (attribute-specifier-seq-opt)] CLOSE_BRACE reduce using rule 209 (declaration-seq-opt) CLASS [reduce using rule 83 (attribute-specifier-seq-opt)] STRUCT [reduce using rule 83 (attribute-specifier-seq-opt)] UNION [reduce using rule 83 (attribute-specifier-seq-opt)] CONST [reduce using rule 83 (attribute-specifier-seq-opt)] VOLATILE [reduce using rule 83 (attribute-specifier-seq-opt)] FRIEND [reduce using rule 83 (attribute-specifier-seq-opt)] TYPEDEF [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTEVAL [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTINIT [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] ENUM [reduce using rule 83 (attribute-specifier-seq-opt)] EXPLICIT [reduce using rule 83 (attribute-specifier-seq-opt)] MODULE reduce using rule 209 (declaration-seq-opt) NAMESPACE [reduce using rule 13 (INLINE-opt)] AUTO reduce using rule 83 (attribute-specifier-seq-opt) AUTO [reduce using rule 709 (type-constraint-opt)] CHAR [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR8_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR16_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR32_T [reduce using rule 83 (attribute-specifier-seq-opt)] WCHAR_T [reduce using rule 83 (attribute-specifier-seq-opt)] BOOL [reduce using rule 83 (attribute-specifier-seq-opt)] SHORT [reduce using rule 83 (attribute-specifier-seq-opt)] INT [reduce using rule 83 (attribute-specifier-seq-opt)] LONG [reduce using rule 83 (attribute-specifier-seq-opt)] SIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] UNSIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] FLOAT [reduce using rule 83 (attribute-specifier-seq-opt)] DOUBLE [reduce using rule 83 (attribute-specifier-seq-opt)] VOID [reduce using rule 83 (attribute-specifier-seq-opt)] STATIC [reduce using rule 83 (attribute-specifier-seq-opt)] THREAD_LOCAL [reduce using rule 83 (attribute-specifier-seq-opt)] MUTABLE [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 187 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113
704 translation-unit → declaration-seq-opt • $default reduce using rule 704 (translation-unit)
455 nested-name-specifier → decltype-specifier • SCOPE 646 simple-type-specifier → decltype-specifier • [COMMA, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, PLUS, MINUS, USING, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, ASM, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, OPEN_SQUARE, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, CLASS, STRUCT, UNION, FINAL, SPACESHIP, CONCEPT, QUERY, AND_AND, OR_OR, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, DOT, ENUM, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, EXPLICIT, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR, TRY, IMPORT, NAMESPACE, REQUIRES, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE, OVERRIDE] SCOPE shift, and go to state 188 SCOPE [reduce using rule 646 (simple-type-specifier)] $default reduce using rule 646 (simple-type-specifier)
197 declaration → deduction-guide • $default reduce using rule 197 (declaration)
181 decl-specifier → defining-type-specifier • $default reduce using rule 181 (decl-specifier)
232 elaborated-type-specifier → elaborated-enum-specifier • $default reduce using rule 232 (elaborated-type-specifier)
725 type-specifier → elaborated-type-specifier • $default reduce using rule 725 (type-specifier)
203 declaration → empty-declaration • $default reduce using rule 203 (declaration)
247 enum-specifier → enum-head • OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | enum-head • OPEN_BRACE enumerator-list COMMA CLOSE_BRACE OPEN_BRACE shift, and go to state 189
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty 84 | • attribute-specifier-seq 239 enum-head → enum-key • attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 496 opaque-enum-declaration → enum-key • attribute-specifier-seq-opt enum-head-name enum-base-opt SEMICOLON $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 190
713 type-name → enum-name • $default reduce using rule 713 (type-name)
219 defining-type-specifier → enum-specifier • $default reduce using rule 219 (defining-type-specifier)
198 declaration → explicit-instantiation • $default reduce using rule 198 (declaration)
199 declaration → explicit-specialization • $default reduce using rule 199 (declaration)
269 explicit-specifier-opt → explicit-specifier • [IDENTIFIER] 330 function-specifier → explicit-specifier • [CONSTEXPR, ELLIPSIS, EXTERN, IDENTIFIER, INLINE, SCOPE, TYPENAME, VIRTUAL, SEMICOLON, ALIGNAS, OPEN_PAREN, AND, OPEN_SQUARE, CLASS, STRUCT, UNION, AND_AND, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, MULT, COMPL, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] IDENTIFIER reduce using rule 269 (explicit-specifier-opt) IDENTIFIER [reduce using rule 330 (function-specifier)] $default reduce using rule 330 (function-specifier)
215 deduction-guide → explicit-specifier-opt • template-name OPEN_PAREN parameter-declaration-clause CLOSE_PAREN DEREF simple-template-id SEMICOLON 695 template-name → • IDENTIFIER IDENTIFIER shift, and go to state 191 template-name go to state 192
200 declaration → export-declaration • $default reduce using rule 200 (declaration)
195 declaration → function-definition • $default reduce using rule 195 (declaration)
182 decl-specifier → function-specifier • $default reduce using rule 182 (decl-specifier)
334 global-module-fragment-opt → global-module-fragment • $default reduce using rule 334 (global-module-fragment-opt)
7 EXPORT-opt → • %empty [MODULE] 8 | • EXPORT 427 module-declaration → • EXPORT-opt MODULE module-name module-partition-opt attribute-specifier-seq-opt SEMICOLON 705 translation-unit → global-module-fragment-opt • module-declaration declaration-seq-opt private-module-fragment-opt EXPORT shift, and go to state 193 $default reduce using rule 7 (EXPORT-opt) EXPORT-opt go to state 194 module-declaration go to state 195
201 declaration → linkage-specification • $default reduce using rule 201 (declaration)
205 declaration → module-import-declaration • $default reduce using rule 205 (declaration)
447 namespace-definition → named-namespace-definition • $default reduce using rule 447 (namespace-definition)
451 namespace-name → namespace-alias • $default reduce using rule 451 (namespace-name)
109 block-declaration → namespace-alias-definition • $default reduce using rule 109 (block-declaration)
202 declaration → namespace-definition • $default reduce using rule 202 (declaration)
454 nested-name-specifier → namespace-name • SCOPE SCOPE shift, and go to state 196
21 TEMPLATE-opt → • %empty [IDENTIFIER] 22 | • TEMPLATE 456 nested-name-specifier → nested-name-specifier • IDENTIFIER SCOPE 457 | nested-name-specifier • TEMPLATE-opt simple-template-id SCOPE 459 nested-name-specifier-opt → nested-name-specifier • [IDENTIFIER] 645 simple-type-specifier → nested-name-specifier • TEMPLATE simple-template-id IDENTIFIER shift, and go to state 197 TEMPLATE shift, and go to state 198 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] IDENTIFIER [reduce using rule 459 (nested-name-specifier-opt)] TEMPLATE-opt go to state 199
137 class-name → • IDENTIFIER 138 | • simple-template-id 151 concept-name → • IDENTIFIER 246 enum-name → • IDENTIFIER 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → nested-name-specifier-opt • type-name 648 | nested-name-specifier-opt • template-name 695 template-name → • IDENTIFIER 707 type-constraint → nested-name-specifier-opt • concept-name 708 | nested-name-specifier-opt • concept-name LESS template-argument-list-opt GREATER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id IDENTIFIER shift, and go to state 200 class-name go to state 55 concept-name go to state 201 enum-name go to state 71 simple-template-id go to state 96 template-name go to state 202 type-name go to state 203 typedef-name go to state 108
449 namespace-definition → nested-namespace-definition • $default reduce using rule 449 (namespace-definition)
194 declaration → nodeclspec-function-declaration • $default reduce using rule 194 (declaration)
115 block-declaration → opaque-enum-declaration • $default reduce using rule 115 (block-declaration)
647 simple-type-specifier → placeholder-type-specifier • $default reduce using rule 647 (simple-type-specifier)
107 block-declaration → simple-declaration • $default reduce using rule 107 (block-declaration)
138 class-name → simple-template-id • [COMMA, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, PLUS, MINUS, USING, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, ASM, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, OPEN_SQUARE, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, CLASS, STRUCT, UNION, FINAL, SPACESHIP, CONCEPT, QUERY, AND_AND, OR_OR, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, DOT, ENUM, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, EXPLICIT, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR, TRY, IMPORT, NAMESPACE, REQUIRES, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE, OVERRIDE] 731 typedef-name → simple-template-id • [COMMA, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, PLUS, MINUS, USING, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, ASM, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, OPEN_SQUARE, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, CLASS, STRUCT, UNION, FINAL, SPACESHIP, CONCEPT, QUERY, AND_AND, OR_OR, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, DOT, ENUM, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, EXPLICIT, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR, TRY, IMPORT, NAMESPACE, REQUIRES, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE, OVERRIDE] COMMA reduce using rule 138 (class-name) COMMA [reduce using rule 731 (typedef-name)] CONSTEXPR reduce using rule 138 (class-name) CONSTEXPR [reduce using rule 731 (typedef-name)] ELLIPSIS reduce using rule 138 (class-name) ELLIPSIS [reduce using rule 731 (typedef-name)] EXPORT reduce using rule 138 (class-name) EXPORT [reduce using rule 731 (typedef-name)] EXTERN reduce using rule 138 (class-name) EXTERN [reduce using rule 731 (typedef-name)] IDENTIFIER reduce using rule 138 (class-name) IDENTIFIER [reduce using rule 731 (typedef-name)] INLINE reduce using rule 138 (class-name) INLINE [reduce using rule 731 (typedef-name)] NOEXCEPT reduce using rule 138 (class-name) NOEXCEPT [reduce using rule 731 (typedef-name)] SCOPE reduce using rule 138 (class-name) SCOPE [reduce using rule 731 (typedef-name)] TEMPLATE reduce using rule 138 (class-name) TEMPLATE [reduce using rule 731 (typedef-name)] TYPENAME reduce using rule 138 (class-name) TYPENAME [reduce using rule 731 (typedef-name)] VIRTUAL reduce using rule 138 (class-name) VIRTUAL [reduce using rule 731 (typedef-name)] PLUS reduce using rule 138 (class-name) PLUS [reduce using rule 731 (typedef-name)] MINUS reduce using rule 138 (class-name) MINUS [reduce using rule 731 (typedef-name)] USING reduce using rule 138 (class-name) USING [reduce using rule 731 (typedef-name)] EQ reduce using rule 138 (class-name) EQ [reduce using rule 731 (typedef-name)] SEMICOLON reduce using rule 138 (class-name) SEMICOLON [reduce using rule 731 (typedef-name)] ALIGNAS reduce using rule 138 (class-name) ALIGNAS [reduce using rule 731 (typedef-name)] OPEN_PAREN reduce using rule 138 (class-name) OPEN_PAREN [reduce using rule 731 (typedef-name)] CLOSE_PAREN reduce using rule 138 (class-name) CLOSE_PAREN [reduce using rule 731 (typedef-name)] AND reduce using rule 138 (class-name) AND [reduce using rule 731 (typedef-name)] ASM reduce using rule 138 (class-name) ASM [reduce using rule 731 (typedef-name)] MULT_EQ reduce using rule 138 (class-name) MULT_EQ [reduce using rule 731 (typedef-name)] DIV_EQ reduce using rule 138 (class-name) DIV_EQ [reduce using rule 731 (typedef-name)] MOD_EQ reduce using rule 138 (class-name) MOD_EQ [reduce using rule 731 (typedef-name)] PLUS_EQ reduce using rule 138 (class-name) PLUS_EQ [reduce using rule 731 (typedef-name)] MINUS_EQ reduce using rule 138 (class-name) MINUS_EQ [reduce using rule 731 (typedef-name)] RSHIFT_EQ reduce using rule 138 (class-name) RSHIFT_EQ [reduce using rule 731 (typedef-name)] LSHIFT_EQ reduce using rule 138 (class-name) LSHIFT_EQ [reduce using rule 731 (typedef-name)] AND_EQ reduce using rule 138 (class-name) AND_EQ [reduce using rule 731 (typedef-name)] XOR_EQ reduce using rule 138 (class-name) XOR_EQ [reduce using rule 731 (typedef-name)] OR_EQ reduce using rule 138 (class-name) OR_EQ [reduce using rule 731 (typedef-name)] OPEN_SQUARE reduce using rule 138 (class-name) OPEN_SQUARE [reduce using rule 731 (typedef-name)] CLOSE_SQUARE reduce using rule 138 (class-name) CLOSE_SQUARE [reduce using rule 731 (typedef-name)] COLON reduce using rule 138 (class-name) COLON [reduce using rule 731 (typedef-name)] OPEN_BRACE reduce using rule 138 (class-name) OPEN_BRACE [reduce using rule 731 (typedef-name)] CLOSE_BRACE reduce using rule 138 (class-name) CLOSE_BRACE [reduce using rule 731 (typedef-name)] CLASS reduce using rule 138 (class-name) CLASS [reduce using rule 731 (typedef-name)] STRUCT reduce using rule 138 (class-name) STRUCT [reduce using rule 731 (typedef-name)] UNION reduce using rule 138 (class-name) UNION [reduce using rule 731 (typedef-name)] FINAL reduce using rule 138 (class-name) FINAL [reduce using rule 731 (typedef-name)] SPACESHIP reduce using rule 138 (class-name) SPACESHIP [reduce using rule 731 (typedef-name)] CONCEPT reduce using rule 138 (class-name) CONCEPT [reduce using rule 731 (typedef-name)] QUERY reduce using rule 138 (class-name) QUERY [reduce using rule 731 (typedef-name)] AND_AND reduce using rule 138 (class-name) AND_AND [reduce using rule 731 (typedef-name)] OR_OR reduce using rule 138 (class-name) OR_OR [reduce using rule 731 (typedef-name)] OPERATOR reduce using rule 138 (class-name) OPERATOR [reduce using rule 731 (typedef-name)] CONST reduce using rule 138 (class-name) CONST [reduce using rule 731 (typedef-name)] VOLATILE reduce using rule 138 (class-name) VOLATILE [reduce using rule 731 (typedef-name)] FRIEND reduce using rule 138 (class-name) FRIEND [reduce using rule 731 (typedef-name)] TYPEDEF reduce using rule 138 (class-name) TYPEDEF [reduce using rule 731 (typedef-name)] CONSTEVAL reduce using rule 138 (class-name) CONSTEVAL [reduce using rule 731 (typedef-name)] CONSTINIT reduce using rule 138 (class-name) CONSTINIT [reduce using rule 731 (typedef-name)] DECLTYPE reduce using rule 138 (class-name) DECLTYPE [reduce using rule 731 (typedef-name)] DEREF reduce using rule 138 (class-name) DEREF [reduce using rule 731 (typedef-name)] DOT reduce using rule 138 (class-name) DOT [reduce using rule 731 (typedef-name)] ENUM reduce using rule 138 (class-name) ENUM [reduce using rule 731 (typedef-name)] EQ_EQ reduce using rule 138 (class-name) EQ_EQ [reduce using rule 731 (typedef-name)] NOT_EQ reduce using rule 138 (class-name) NOT_EQ [reduce using rule 731 (typedef-name)] XOR reduce using rule 138 (class-name) XOR [reduce using rule 731 (typedef-name)] LESS reduce using rule 138 (class-name) LESS [reduce using rule 731 (typedef-name)] GREATER reduce using rule 138 (class-name) GREATER [reduce using rule 731 (typedef-name)] EXPLICIT reduce using rule 138 (class-name) EXPLICIT [reduce using rule 731 (typedef-name)] MULT reduce using rule 138 (class-name) MULT [reduce using rule 731 (typedef-name)] DIV reduce using rule 138 (class-name) DIV [reduce using rule 731 (typedef-name)] MOD reduce using rule 138 (class-name) MOD [reduce using rule 731 (typedef-name)] OR reduce using rule 138 (class-name) OR [reduce using rule 731 (typedef-name)] LSHIFT reduce using rule 138 (class-name) LSHIFT [reduce using rule 731 (typedef-name)] RSHIFT reduce using rule 138 (class-name) RSHIFT [reduce using rule 731 (typedef-name)] LESS_EQ reduce using rule 138 (class-name) LESS_EQ [reduce using rule 731 (typedef-name)] GREATER_EQ reduce using rule 138 (class-name) GREATER_EQ [reduce using rule 731 (typedef-name)] DOT_STAR reduce using rule 138 (class-name) DOT_STAR [reduce using rule 731 (typedef-name)] DEREF_STAR reduce using rule 138 (class-name) DEREF_STAR [reduce using rule 731 (typedef-name)] TRY reduce using rule 138 (class-name) TRY [reduce using rule 731 (typedef-name)] IMPORT reduce using rule 138 (class-name) IMPORT [reduce using rule 731 (typedef-name)] NAMESPACE reduce using rule 138 (class-name) NAMESPACE [reduce using rule 731 (typedef-name)] REQUIRES reduce using rule 138 (class-name) REQUIRES [reduce using rule 731 (typedef-name)] COMPL reduce using rule 138 (class-name) COMPL [reduce using rule 731 (typedef-name)] PLUS_PLUS reduce using rule 138 (class-name) PLUS_PLUS [reduce using rule 731 (typedef-name)] MINUS_MINUS reduce using rule 138 (class-name) MINUS_MINUS [reduce using rule 731 (typedef-name)] AUTO reduce using rule 138 (class-name) AUTO [reduce using rule 731 (typedef-name)] CHAR reduce using rule 138 (class-name) CHAR [reduce using rule 731 (typedef-name)] CHAR8_T reduce using rule 138 (class-name) CHAR8_T [reduce using rule 731 (typedef-name)] CHAR16_T reduce using rule 138 (class-name) CHAR16_T [reduce using rule 731 (typedef-name)] CHAR32_T reduce using rule 138 (class-name) CHAR32_T [reduce using rule 731 (typedef-name)] WCHAR_T reduce using rule 138 (class-name) WCHAR_T [reduce using rule 731 (typedef-name)] BOOL reduce using rule 138 (class-name) BOOL [reduce using rule 731 (typedef-name)] SHORT reduce using rule 138 (class-name) SHORT [reduce using rule 731 (typedef-name)] INT reduce using rule 138 (class-name) INT [reduce using rule 731 (typedef-name)] LONG reduce using rule 138 (class-name) LONG [reduce using rule 731 (typedef-name)] SIGNED reduce using rule 138 (class-name) SIGNED [reduce using rule 731 (typedef-name)] UNSIGNED reduce using rule 138 (class-name) UNSIGNED [reduce using rule 731 (typedef-name)] FLOAT reduce using rule 138 (class-name) FLOAT [reduce using rule 731 (typedef-name)] DOUBLE reduce using rule 138 (class-name) DOUBLE [reduce using rule 731 (typedef-name)] VOID reduce using rule 138 (class-name) VOID [reduce using rule 731 (typedef-name)] STATIC_ASSERT reduce using rule 138 (class-name) STATIC_ASSERT [reduce using rule 731 (typedef-name)] STATIC reduce using rule 138 (class-name) STATIC [reduce using rule 731 (typedef-name)] THREAD_LOCAL reduce using rule 138 (class-name) THREAD_LOCAL [reduce using rule 731 (typedef-name)] MUTABLE reduce using rule 138 (class-name) MUTABLE [reduce using rule 731 (typedef-name)] OVERRIDE reduce using rule 138 (class-name) OVERRIDE [reduce using rule 731 (typedef-name)] $default reduce using rule 138 (class-name)
724 type-specifier → simple-type-specifier • $default reduce using rule 724 (type-specifier)
113 block-declaration → static_assert-declaration • $default reduce using rule 113 (block-declaration)
180 decl-specifier → storage-class-specifier • $default reduce using rule 180 (decl-specifier)
196 declaration → template-declaration • $default reduce using rule 196 (declaration)
9 EXTERN-opt → • %empty [TEMPLATE] 10 | • EXTERN 13 INLINE-opt → • %empty [NAMESPACE] 14 | • INLINE 44 alias-declaration → • USING IDENTIFIER attribute-specifier-seq-opt EQ defining-type-id SEMICOLON 49 asm-declaration → • attribute-specifier-seq-opt ASM OPEN_PAREN string-literal CLOSE_PAREN SEMICOLON 71 attribute-declaration → • attribute-specifier-seq SEMICOLON 82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, ELLIPSIS, EXTERN, IDENTIFIER, INLINE, SCOPE, TYPENAME, VIRTUAL, USING, ALIGNAS, OPEN_PAREN, AND, ASM, OPEN_SQUARE, CLASS, STRUCT, UNION, AND_AND, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, MULT, COMPL, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 84 | • attribute-specifier-seq 107 block-declaration → • simple-declaration 108 | • asm-declaration 109 | • namespace-alias-definition 110 | • using-declaration 111 | • using-enum-declaration 112 | • using-directive 113 | • static_assert-declaration 114 | • alias-declaration 115 | • opaque-enum-declaration 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 150 concept-definition → • CONCEPT concept-name EQ constraint-expression SEMICOLON 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 193 declaration → • block-declaration 194 | • nodeclspec-function-declaration 195 | • function-definition 196 | • template-declaration 197 | • deduction-guide 198 | • explicit-instantiation 199 | • explicit-specialization 200 | • export-declaration 201 | • linkage-specification 202 | • namespace-definition 203 | • empty-declaration 204 | • attribute-declaration 205 | • module-import-declaration 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 215 deduction-guide → • explicit-specifier-opt template-name OPEN_PAREN parameter-declaration-clause CLOSE_PAREN DEREF simple-template-id SEMICOLON 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 233 empty-declaration → • SEMICOLON 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 264 explicit-instantiation → • EXTERN-opt TEMPLATE declaration 265 explicit-specialization → • TEMPLATE LESS GREATER declaration 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 268 explicit-specifier-opt → • %empty [IDENTIFIER] 269 | • explicit-specifier 270 export-declaration → • EXPORT declaration 271 | • EXPORT OPEN_BRACE declaration-seq-opt CLOSE_BRACE 272 | • EXPORT module-import-declaration 327 function-definition → • attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | • attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 390 linkage-specification → • EXTERN string-literal OPEN_BRACE declaration-seq-opt CLOSE_BRACE 391 | • EXTERN string-literal declaration 428 module-import-declaration → • IMPORT module-name attribute-specifier-seq-opt SEMICOLON 429 | • IMPORT module-partition attribute-specifier-seq-opt SEMICOLON 430 | • IMPORT header-name attribute-specifier-seq-opt SEMICOLON 443 named-namespace-definition → • INLINE-opt NAMESPACE attribute-specifier-seq-opt IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE 444 namespace-alias → • IDENTIFIER 445 namespace-alias-definition → • NAMESPACE IDENTIFIER EQ qualified-namespace-specifier SEMICOLON 447 namespace-definition → • named-namespace-definition 448 | • unnamed-namespace-definition 449 | • nested-namespace-definition 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 460 nested-namespace-definition → • NAMESPACE enclosing-namespace-specifier SCOPE INLINE-opt IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE 476 nodeclspec-function-declaration → • attribute-specifier-seq-opt declarator SEMICOLON 496 opaque-enum-declaration → • enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt SEMICOLON 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 639 simple-declaration → • decl-specifier-seq init-declarator-list-opt SEMICOLON 640 | • attribute-specifier-seq decl-specifier-seq init-declarator-list SEMICOLON 641 | • attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE initializer SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 675 static_assert-declaration → • STATIC_ASSERT OPEN_PAREN constant-expression CLOSE_PAREN SEMICOLON 676 | • STATIC_ASSERT OPEN_PAREN constant-expression COMMA string-literal CLOSE_PAREN SEMICOLON 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 689 template-declaration → • template-head declaration 689 | template-head • declaration 690 | • template-head concept-definition 690 | template-head • concept-definition 691 template-head → • TEMPLATE LESS template-parameter-list GREATER requires-clause-opt 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 753 unnamed-namespace-definition → • INLINE-opt NAMESPACE attribute-specifier-seq-opt OPEN_BRACE namespace-body CLOSE_BRACE 762 using-declaration → • USING using-declarator-list SEMICOLON 766 using-directive → • attribute-specifier-seq-opt USING NAMESPACE nested-name-specifier-opt namespace-name SEMICOLON 767 using-enum-declaration → • USING elaborated-enum-specifier SEMICOLON CONSTEXPR shift, and go to state 1 EXPORT shift, and go to state 2 EXTERN shift, and go to state 3 IDENTIFIER shift, and go to state 4 INLINE shift, and go to state 5 SCOPE shift, and go to state 6 TEMPLATE shift, and go to state 7 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 USING shift, and go to state 10 SEMICOLON shift, and go to state 11 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONCEPT shift, and go to state 204 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 IMPORT shift, and go to state 25 NAMESPACE shift, and go to state 26 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC_ASSERT shift, and go to state 41 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 CONSTEXPR [reduce using rule 83 (attribute-specifier-seq-opt)] EXTERN [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] INLINE [reduce using rule 83 (attribute-specifier-seq-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] TEMPLATE [reduce using rule 9 (EXTERN-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] VIRTUAL [reduce using rule 83 (attribute-specifier-seq-opt)] USING [reduce using rule 83 (attribute-specifier-seq-opt)] CLASS [reduce using rule 83 (attribute-specifier-seq-opt)] STRUCT [reduce using rule 83 (attribute-specifier-seq-opt)] UNION [reduce using rule 83 (attribute-specifier-seq-opt)] CONST [reduce using rule 83 (attribute-specifier-seq-opt)] VOLATILE [reduce using rule 83 (attribute-specifier-seq-opt)] FRIEND [reduce using rule 83 (attribute-specifier-seq-opt)] TYPEDEF [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTEVAL [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTINIT [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] ENUM [reduce using rule 83 (attribute-specifier-seq-opt)] EXPLICIT [reduce using rule 83 (attribute-specifier-seq-opt)] NAMESPACE [reduce using rule 13 (INLINE-opt)] AUTO reduce using rule 83 (attribute-specifier-seq-opt) AUTO [reduce using rule 709 (type-constraint-opt)] CHAR [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR8_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR16_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR32_T [reduce using rule 83 (attribute-specifier-seq-opt)] WCHAR_T [reduce using rule 83 (attribute-specifier-seq-opt)] BOOL [reduce using rule 83 (attribute-specifier-seq-opt)] SHORT [reduce using rule 83 (attribute-specifier-seq-opt)] INT [reduce using rule 83 (attribute-specifier-seq-opt)] LONG [reduce using rule 83 (attribute-specifier-seq-opt)] SIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] UNSIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] FLOAT [reduce using rule 83 (attribute-specifier-seq-opt)] DOUBLE [reduce using rule 83 (attribute-specifier-seq-opt)] VOID [reduce using rule 83 (attribute-specifier-seq-opt)] STATIC [reduce using rule 83 (attribute-specifier-seq-opt)] THREAD_LOCAL [reduce using rule 83 (attribute-specifier-seq-opt)] MUTABLE [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 concept-definition go to state 205 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 206 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113
643 simple-template-id → template-name • LESS template-argument-list-opt GREATER LESS shift, and go to state 207
0 $accept → translation-unit • $end $end shift, and go to state 208
710 type-constraint-opt → type-constraint • $default reduce using rule 710 (type-constraint-opt)
554 placeholder-type-specifier → type-constraint-opt • AUTO 555 | type-constraint-opt • DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN DECLTYPE shift, and go to state 209 AUTO shift, and go to state 210
453 nested-name-specifier → type-name • SCOPE SCOPE shift, and go to state 211
217 defining-type-specifier → type-specifier • $default reduce using rule 217 (defining-type-specifier)
714 type-name → typedef-name • $default reduce using rule 714 (type-name)
726 type-specifier → typename-specifier • $default reduce using rule 726 (type-specifier)
448 namespace-definition → unnamed-namespace-definition • $default reduce using rule 448 (namespace-definition)
110 block-declaration → using-declaration • $default reduce using rule 110 (block-declaration)
112 block-declaration → using-directive • $default reduce using rule 112 (block-declaration)
111 block-declaration → using-enum-declaration • $default reduce using rule 111 (block-declaration)
9 EXTERN-opt → • %empty [TEMPLATE] 10 | • EXTERN 13 INLINE-opt → • %empty [NAMESPACE] 14 | • INLINE 44 alias-declaration → • USING IDENTIFIER attribute-specifier-seq-opt EQ defining-type-id SEMICOLON 49 asm-declaration → • attribute-specifier-seq-opt ASM OPEN_PAREN string-literal CLOSE_PAREN SEMICOLON 71 attribute-declaration → • attribute-specifier-seq SEMICOLON 82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, ELLIPSIS, EXTERN, IDENTIFIER, INLINE, SCOPE, TYPENAME, VIRTUAL, USING, ALIGNAS, OPEN_PAREN, AND, ASM, OPEN_SQUARE, CLASS, STRUCT, UNION, AND_AND, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, MULT, COMPL, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 84 | • attribute-specifier-seq 107 block-declaration → • simple-declaration 108 | • asm-declaration 109 | • namespace-alias-definition 110 | • using-declaration 111 | • using-enum-declaration 112 | • using-directive 113 | • static_assert-declaration 114 | • alias-declaration 115 | • opaque-enum-declaration 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 193 declaration → • block-declaration 194 | • nodeclspec-function-declaration 195 | • function-definition 196 | • template-declaration 197 | • deduction-guide 198 | • explicit-instantiation 199 | • explicit-specialization 200 | • export-declaration 201 | • linkage-specification 202 | • namespace-definition 203 | • empty-declaration 204 | • attribute-declaration 205 | • module-import-declaration 206 declaration-seq → • declaration 207 | • declaration-seq declaration 208 declaration-seq-opt → • %empty [CLOSE_BRACE] 209 | • declaration-seq 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 215 deduction-guide → • explicit-specifier-opt template-name OPEN_PAREN parameter-declaration-clause CLOSE_PAREN DEREF simple-template-id SEMICOLON 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 233 empty-declaration → • SEMICOLON 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 264 explicit-instantiation → • EXTERN-opt TEMPLATE declaration 265 explicit-specialization → • TEMPLATE LESS GREATER declaration 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 268 explicit-specifier-opt → • %empty [IDENTIFIER] 269 | • explicit-specifier 270 export-declaration → • EXPORT declaration 271 | • EXPORT OPEN_BRACE declaration-seq-opt CLOSE_BRACE 271 | EXPORT OPEN_BRACE • declaration-seq-opt CLOSE_BRACE 272 | • EXPORT module-import-declaration 327 function-definition → • attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | • attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 390 linkage-specification → • EXTERN string-literal OPEN_BRACE declaration-seq-opt CLOSE_BRACE 391 | • EXTERN string-literal declaration 428 module-import-declaration → • IMPORT module-name attribute-specifier-seq-opt SEMICOLON 429 | • IMPORT module-partition attribute-specifier-seq-opt SEMICOLON 430 | • IMPORT header-name attribute-specifier-seq-opt SEMICOLON 443 named-namespace-definition → • INLINE-opt NAMESPACE attribute-specifier-seq-opt IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE 444 namespace-alias → • IDENTIFIER 445 namespace-alias-definition → • NAMESPACE IDENTIFIER EQ qualified-namespace-specifier SEMICOLON 447 namespace-definition → • named-namespace-definition 448 | • unnamed-namespace-definition 449 | • nested-namespace-definition 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 460 nested-namespace-definition → • NAMESPACE enclosing-namespace-specifier SCOPE INLINE-opt IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE 476 nodeclspec-function-declaration → • attribute-specifier-seq-opt declarator SEMICOLON 496 opaque-enum-declaration → • enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt SEMICOLON 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 639 simple-declaration → • decl-specifier-seq init-declarator-list-opt SEMICOLON 640 | • attribute-specifier-seq decl-specifier-seq init-declarator-list SEMICOLON 641 | • attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE initializer SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 675 static_assert-declaration → • STATIC_ASSERT OPEN_PAREN constant-expression CLOSE_PAREN SEMICOLON 676 | • STATIC_ASSERT OPEN_PAREN constant-expression COMMA string-literal CLOSE_PAREN SEMICOLON 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 689 template-declaration → • template-head declaration 690 | • template-head concept-definition 691 template-head → • TEMPLATE LESS template-parameter-list GREATER requires-clause-opt 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 753 unnamed-namespace-definition → • INLINE-opt NAMESPACE attribute-specifier-seq-opt OPEN_BRACE namespace-body CLOSE_BRACE 762 using-declaration → • USING using-declarator-list SEMICOLON 766 using-directive → • attribute-specifier-seq-opt USING NAMESPACE nested-name-specifier-opt namespace-name SEMICOLON 767 using-enum-declaration → • USING elaborated-enum-specifier SEMICOLON CONSTEXPR shift, and go to state 1 EXPORT shift, and go to state 2 EXTERN shift, and go to state 3 IDENTIFIER shift, and go to state 4 INLINE shift, and go to state 5 SCOPE shift, and go to state 6 TEMPLATE shift, and go to state 7 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 USING shift, and go to state 10 SEMICOLON shift, and go to state 11 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 IMPORT shift, and go to state 25 NAMESPACE shift, and go to state 26 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC_ASSERT shift, and go to state 41 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 CONSTEXPR [reduce using rule 83 (attribute-specifier-seq-opt)] EXTERN [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] INLINE [reduce using rule 83 (attribute-specifier-seq-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] TEMPLATE [reduce using rule 9 (EXTERN-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] VIRTUAL [reduce using rule 83 (attribute-specifier-seq-opt)] USING [reduce using rule 83 (attribute-specifier-seq-opt)] CLOSE_BRACE reduce using rule 208 (declaration-seq-opt) CLASS [reduce using rule 83 (attribute-specifier-seq-opt)] STRUCT [reduce using rule 83 (attribute-specifier-seq-opt)] UNION [reduce using rule 83 (attribute-specifier-seq-opt)] CONST [reduce using rule 83 (attribute-specifier-seq-opt)] VOLATILE [reduce using rule 83 (attribute-specifier-seq-opt)] FRIEND [reduce using rule 83 (attribute-specifier-seq-opt)] TYPEDEF [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTEVAL [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTINIT [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] ENUM [reduce using rule 83 (attribute-specifier-seq-opt)] EXPLICIT [reduce using rule 83 (attribute-specifier-seq-opt)] NAMESPACE [reduce using rule 13 (INLINE-opt)] AUTO reduce using rule 83 (attribute-specifier-seq-opt) AUTO [reduce using rule 709 (type-constraint-opt)] CHAR [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR8_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR16_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR32_T [reduce using rule 83 (attribute-specifier-seq-opt)] WCHAR_T [reduce using rule 83 (attribute-specifier-seq-opt)] BOOL [reduce using rule 83 (attribute-specifier-seq-opt)] SHORT [reduce using rule 83 (attribute-specifier-seq-opt)] INT [reduce using rule 83 (attribute-specifier-seq-opt)] LONG [reduce using rule 83 (attribute-specifier-seq-opt)] SIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] UNSIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] FLOAT [reduce using rule 83 (attribute-specifier-seq-opt)] DOUBLE [reduce using rule 83 (attribute-specifier-seq-opt)] VOID [reduce using rule 83 (attribute-specifier-seq-opt)] STATIC [reduce using rule 83 (attribute-specifier-seq-opt)] THREAD_LOCAL [reduce using rule 83 (attribute-specifier-seq-opt)] MUTABLE [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 60 declaration-seq go to state 61 declaration-seq-opt go to state 212 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113
270 export-declaration → EXPORT declaration • $default reduce using rule 270 (export-declaration)
205 declaration → module-import-declaration • [$end, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, PRIVATE, PROTECTED, PUBLIC, USING, SEMICOLON, ALIGNAS, OPEN_PAREN, AND, ASM, OPEN_SQUARE, COLON, CLOSE_BRACE, CLASS, STRUCT, UNION, AND_AND, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, MULT, MODULE, IMPORT, NAMESPACE, COMPL, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE] 272 export-declaration → EXPORT module-import-declaration • [$end, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, PRIVATE, PROTECTED, PUBLIC, USING, SEMICOLON, ALIGNAS, OPEN_PAREN, AND, ASM, OPEN_SQUARE, COLON, CLOSE_BRACE, CLASS, STRUCT, UNION, AND_AND, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, MULT, MODULE, IMPORT, NAMESPACE, COMPL, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE] $end reduce using rule 205 (declaration) $end [reduce using rule 272 (export-declaration)] CONSTEXPR reduce using rule 205 (declaration) CONSTEXPR [reduce using rule 272 (export-declaration)] ELLIPSIS reduce using rule 205 (declaration) ELLIPSIS [reduce using rule 272 (export-declaration)] EXPORT reduce using rule 205 (declaration) EXPORT [reduce using rule 272 (export-declaration)] EXTERN reduce using rule 205 (declaration) EXTERN [reduce using rule 272 (export-declaration)] IDENTIFIER reduce using rule 205 (declaration) IDENTIFIER [reduce using rule 272 (export-declaration)] INLINE reduce using rule 205 (declaration) INLINE [reduce using rule 272 (export-declaration)] SCOPE reduce using rule 205 (declaration) SCOPE [reduce using rule 272 (export-declaration)] TEMPLATE reduce using rule 205 (declaration) TEMPLATE [reduce using rule 272 (export-declaration)] TYPENAME reduce using rule 205 (declaration) TYPENAME [reduce using rule 272 (export-declaration)] VIRTUAL reduce using rule 205 (declaration) VIRTUAL [reduce using rule 272 (export-declaration)] PRIVATE reduce using rule 205 (declaration) PRIVATE [reduce using rule 272 (export-declaration)] PROTECTED reduce using rule 205 (declaration) PROTECTED [reduce using rule 272 (export-declaration)] PUBLIC reduce using rule 205 (declaration) PUBLIC [reduce using rule 272 (export-declaration)] USING reduce using rule 205 (declaration) USING [reduce using rule 272 (export-declaration)] SEMICOLON reduce using rule 205 (declaration) SEMICOLON [reduce using rule 272 (export-declaration)] ALIGNAS reduce using rule 205 (declaration) ALIGNAS [reduce using rule 272 (export-declaration)] OPEN_PAREN reduce using rule 205 (declaration) OPEN_PAREN [reduce using rule 272 (export-declaration)] AND reduce using rule 205 (declaration) AND [reduce using rule 272 (export-declaration)] ASM reduce using rule 205 (declaration) ASM [reduce using rule 272 (export-declaration)] OPEN_SQUARE reduce using rule 205 (declaration) OPEN_SQUARE [reduce using rule 272 (export-declaration)] COLON reduce using rule 205 (declaration) COLON [reduce using rule 272 (export-declaration)] CLOSE_BRACE reduce using rule 205 (declaration) CLOSE_BRACE [reduce using rule 272 (export-declaration)] CLASS reduce using rule 205 (declaration) CLASS [reduce using rule 272 (export-declaration)] STRUCT reduce using rule 205 (declaration) STRUCT [reduce using rule 272 (export-declaration)] UNION reduce using rule 205 (declaration) UNION [reduce using rule 272 (export-declaration)] AND_AND reduce using rule 205 (declaration) AND_AND [reduce using rule 272 (export-declaration)] OPERATOR reduce using rule 205 (declaration) OPERATOR [reduce using rule 272 (export-declaration)] CONST reduce using rule 205 (declaration) CONST [reduce using rule 272 (export-declaration)] VOLATILE reduce using rule 205 (declaration) VOLATILE [reduce using rule 272 (export-declaration)] FRIEND reduce using rule 205 (declaration) FRIEND [reduce using rule 272 (export-declaration)] TYPEDEF reduce using rule 205 (declaration) TYPEDEF [reduce using rule 272 (export-declaration)] CONSTEVAL reduce using rule 205 (declaration) CONSTEVAL [reduce using rule 272 (export-declaration)] CONSTINIT reduce using rule 205 (declaration) CONSTINIT [reduce using rule 272 (export-declaration)] DECLTYPE reduce using rule 205 (declaration) DECLTYPE [reduce using rule 272 (export-declaration)] ENUM reduce using rule 205 (declaration) ENUM [reduce using rule 272 (export-declaration)] EXPLICIT reduce using rule 205 (declaration) EXPLICIT [reduce using rule 272 (export-declaration)] MULT reduce using rule 205 (declaration) MULT [reduce using rule 272 (export-declaration)] MODULE reduce using rule 205 (declaration) MODULE [reduce using rule 272 (export-declaration)] IMPORT reduce using rule 205 (declaration) IMPORT [reduce using rule 272 (export-declaration)] NAMESPACE reduce using rule 205 (declaration) NAMESPACE [reduce using rule 272 (export-declaration)] COMPL reduce using rule 205 (declaration) COMPL [reduce using rule 272 (export-declaration)] AUTO reduce using rule 205 (declaration) AUTO [reduce using rule 272 (export-declaration)] CHAR reduce using rule 205 (declaration) CHAR [reduce using rule 272 (export-declaration)] CHAR8_T reduce using rule 205 (declaration) CHAR8_T [reduce using rule 272 (export-declaration)] CHAR16_T reduce using rule 205 (declaration) CHAR16_T [reduce using rule 272 (export-declaration)] CHAR32_T reduce using rule 205 (declaration) CHAR32_T [reduce using rule 272 (export-declaration)] WCHAR_T reduce using rule 205 (declaration) WCHAR_T [reduce using rule 272 (export-declaration)] BOOL reduce using rule 205 (declaration) BOOL [reduce using rule 272 (export-declaration)] SHORT reduce using rule 205 (declaration) SHORT [reduce using rule 272 (export-declaration)] INT reduce using rule 205 (declaration) INT [reduce using rule 272 (export-declaration)] LONG reduce using rule 205 (declaration) LONG [reduce using rule 272 (export-declaration)] SIGNED reduce using rule 205 (declaration) SIGNED [reduce using rule 272 (export-declaration)] UNSIGNED reduce using rule 205 (declaration) UNSIGNED [reduce using rule 272 (export-declaration)] FLOAT reduce using rule 205 (declaration) FLOAT [reduce using rule 272 (export-declaration)] DOUBLE reduce using rule 205 (declaration) DOUBLE [reduce using rule 272 (export-declaration)] VOID reduce using rule 205 (declaration) VOID [reduce using rule 272 (export-declaration)] STATIC_ASSERT reduce using rule 205 (declaration) STATIC_ASSERT [reduce using rule 272 (export-declaration)] STATIC reduce using rule 205 (declaration) STATIC [reduce using rule 272 (export-declaration)] THREAD_LOCAL reduce using rule 205 (declaration) THREAD_LOCAL [reduce using rule 272 (export-declaration)] MUTABLE reduce using rule 205 (declaration) MUTABLE [reduce using rule 272 (export-declaration)] $default reduce using rule 205 (declaration)
681 string-literal → STRING_LITERAL • $default reduce using rule 681 (string-literal)
9 EXTERN-opt → • %empty [TEMPLATE] 10 | • EXTERN 13 INLINE-opt → • %empty [NAMESPACE] 14 | • INLINE 44 alias-declaration → • USING IDENTIFIER attribute-specifier-seq-opt EQ defining-type-id SEMICOLON 49 asm-declaration → • attribute-specifier-seq-opt ASM OPEN_PAREN string-literal CLOSE_PAREN SEMICOLON 71 attribute-declaration → • attribute-specifier-seq SEMICOLON 82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, ELLIPSIS, EXTERN, IDENTIFIER, INLINE, SCOPE, TYPENAME, VIRTUAL, USING, ALIGNAS, OPEN_PAREN, AND, ASM, OPEN_SQUARE, CLASS, STRUCT, UNION, AND_AND, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, MULT, COMPL, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 84 | • attribute-specifier-seq 107 block-declaration → • simple-declaration 108 | • asm-declaration 109 | • namespace-alias-definition 110 | • using-declaration 111 | • using-enum-declaration 112 | • using-directive 113 | • static_assert-declaration 114 | • alias-declaration 115 | • opaque-enum-declaration 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 193 declaration → • block-declaration 194 | • nodeclspec-function-declaration 195 | • function-definition 196 | • template-declaration 197 | • deduction-guide 198 | • explicit-instantiation 199 | • explicit-specialization 200 | • export-declaration 201 | • linkage-specification 202 | • namespace-definition 203 | • empty-declaration 204 | • attribute-declaration 205 | • module-import-declaration 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 215 deduction-guide → • explicit-specifier-opt template-name OPEN_PAREN parameter-declaration-clause CLOSE_PAREN DEREF simple-template-id SEMICOLON 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 233 empty-declaration → • SEMICOLON 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 264 explicit-instantiation → • EXTERN-opt TEMPLATE declaration 265 explicit-specialization → • TEMPLATE LESS GREATER declaration 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 268 explicit-specifier-opt → • %empty [IDENTIFIER] 269 | • explicit-specifier 270 export-declaration → • EXPORT declaration 271 | • EXPORT OPEN_BRACE declaration-seq-opt CLOSE_BRACE 272 | • EXPORT module-import-declaration 327 function-definition → • attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | • attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 390 linkage-specification → • EXTERN string-literal OPEN_BRACE declaration-seq-opt CLOSE_BRACE 390 | EXTERN string-literal • OPEN_BRACE declaration-seq-opt CLOSE_BRACE 391 | • EXTERN string-literal declaration 391 | EXTERN string-literal • declaration 428 module-import-declaration → • IMPORT module-name attribute-specifier-seq-opt SEMICOLON 429 | • IMPORT module-partition attribute-specifier-seq-opt SEMICOLON 430 | • IMPORT header-name attribute-specifier-seq-opt SEMICOLON 443 named-namespace-definition → • INLINE-opt NAMESPACE attribute-specifier-seq-opt IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE 444 namespace-alias → • IDENTIFIER 445 namespace-alias-definition → • NAMESPACE IDENTIFIER EQ qualified-namespace-specifier SEMICOLON 447 namespace-definition → • named-namespace-definition 448 | • unnamed-namespace-definition 449 | • nested-namespace-definition 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 460 nested-namespace-definition → • NAMESPACE enclosing-namespace-specifier SCOPE INLINE-opt IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE 476 nodeclspec-function-declaration → • attribute-specifier-seq-opt declarator SEMICOLON 496 opaque-enum-declaration → • enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt SEMICOLON 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 639 simple-declaration → • decl-specifier-seq init-declarator-list-opt SEMICOLON 640 | • attribute-specifier-seq decl-specifier-seq init-declarator-list SEMICOLON 641 | • attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE initializer SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 675 static_assert-declaration → • STATIC_ASSERT OPEN_PAREN constant-expression CLOSE_PAREN SEMICOLON 676 | • STATIC_ASSERT OPEN_PAREN constant-expression COMMA string-literal CLOSE_PAREN SEMICOLON 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 689 template-declaration → • template-head declaration 690 | • template-head concept-definition 691 template-head → • TEMPLATE LESS template-parameter-list GREATER requires-clause-opt 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 753 unnamed-namespace-definition → • INLINE-opt NAMESPACE attribute-specifier-seq-opt OPEN_BRACE namespace-body CLOSE_BRACE 762 using-declaration → • USING using-declarator-list SEMICOLON 766 using-directive → • attribute-specifier-seq-opt USING NAMESPACE nested-name-specifier-opt namespace-name SEMICOLON 767 using-enum-declaration → • USING elaborated-enum-specifier SEMICOLON CONSTEXPR shift, and go to state 1 EXPORT shift, and go to state 2 EXTERN shift, and go to state 3 IDENTIFIER shift, and go to state 4 INLINE shift, and go to state 5 SCOPE shift, and go to state 6 TEMPLATE shift, and go to state 7 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 USING shift, and go to state 10 SEMICOLON shift, and go to state 11 OPEN_BRACE shift, and go to state 213 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 IMPORT shift, and go to state 25 NAMESPACE shift, and go to state 26 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC_ASSERT shift, and go to state 41 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 CONSTEXPR [reduce using rule 83 (attribute-specifier-seq-opt)] EXTERN [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] INLINE [reduce using rule 83 (attribute-specifier-seq-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] TEMPLATE [reduce using rule 9 (EXTERN-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] VIRTUAL [reduce using rule 83 (attribute-specifier-seq-opt)] USING [reduce using rule 83 (attribute-specifier-seq-opt)] CLASS [reduce using rule 83 (attribute-specifier-seq-opt)] STRUCT [reduce using rule 83 (attribute-specifier-seq-opt)] UNION [reduce using rule 83 (attribute-specifier-seq-opt)] CONST [reduce using rule 83 (attribute-specifier-seq-opt)] VOLATILE [reduce using rule 83 (attribute-specifier-seq-opt)] FRIEND [reduce using rule 83 (attribute-specifier-seq-opt)] TYPEDEF [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTEVAL [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTINIT [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] ENUM [reduce using rule 83 (attribute-specifier-seq-opt)] EXPLICIT [reduce using rule 83 (attribute-specifier-seq-opt)] NAMESPACE [reduce using rule 13 (INLINE-opt)] AUTO reduce using rule 83 (attribute-specifier-seq-opt) AUTO [reduce using rule 709 (type-constraint-opt)] CHAR [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR8_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR16_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR32_T [reduce using rule 83 (attribute-specifier-seq-opt)] WCHAR_T [reduce using rule 83 (attribute-specifier-seq-opt)] BOOL [reduce using rule 83 (attribute-specifier-seq-opt)] SHORT [reduce using rule 83 (attribute-specifier-seq-opt)] INT [reduce using rule 83 (attribute-specifier-seq-opt)] LONG [reduce using rule 83 (attribute-specifier-seq-opt)] SIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] UNSIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] FLOAT [reduce using rule 83 (attribute-specifier-seq-opt)] DOUBLE [reduce using rule 83 (attribute-specifier-seq-opt)] VOID [reduce using rule 83 (attribute-specifier-seq-opt)] STATIC [reduce using rule 83 (attribute-specifier-seq-opt)] THREAD_LOCAL [reduce using rule 83 (attribute-specifier-seq-opt)] MUTABLE [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 214 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, EXTERN, IDENTIFIER, INLINE, SCOPE, THIS, TYPENAME, VIRTUAL, ALIGNAS, OPEN_SQUARE, CLASS, STRUCT, UNION, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 84 | • attribute-specifier-seq 137 class-name → • IDENTIFIER 138 | • simple-template-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 265 explicit-specialization → TEMPLATE LESS • GREATER declaration 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 543 parameter-declaration → • attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 544 | • attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator EQ initializer-clause 545 | • attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 546 | • attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt EQ initializer-clause 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 691 template-head → • TEMPLATE LESS template-parameter-list GREATER requires-clause-opt 691 | TEMPLATE LESS • template-parameter-list GREATER requires-clause-opt 695 template-name → • IDENTIFIER 696 template-parameter → • type-parameter 697 | • parameter-declaration 698 template-parameter-list → • template-parameter 699 | • template-parameter-list COMMA template-parameter 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 715 type-parameter → • type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 716 | • type-parameter-key IDENTIFIER-opt EQ type-id 717 | • type-constraint ELLIPSIS-opt IDENTIFIER-opt 718 | • type-constraint IDENTIFIER-opt EQ type-id 719 | • template-head type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 720 | • template-head type-parameter-key IDENTIFIER-opt EQ id-expression 721 type-parameter-key → • CLASS 722 | • TYPENAME 730 typedef-name → • IDENTIFIER 731 | • simple-template-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 TEMPLATE shift, and go to state 215 TYPENAME shift, and go to state 216 CLASS shift, and go to state 217 DECLTYPE shift, and go to state 21 GREATER shift, and go to state 218 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] CLASS [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 219 class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 132 nested-name-specifier-opt go to state 220 parameter-declaration go to state 221 simple-template-id go to state 96 template-head go to state 222 template-name go to state 102 template-parameter go to state 223 template-parameter-list go to state 224 type-constraint go to state 225 type-name go to state 106 type-parameter go to state 226 type-parameter-key go to state 227 typedef-name go to state 108
455 nested-name-specifier → decltype-specifier • SCOPE SCOPE shift, and go to state 188
21 TEMPLATE-opt → • %empty [IDENTIFIER] 22 | • TEMPLATE 456 nested-name-specifier → nested-name-specifier • IDENTIFIER SCOPE 457 | nested-name-specifier • TEMPLATE-opt simple-template-id SCOPE 732 typename-specifier → TYPENAME nested-name-specifier • IDENTIFIER 733 | TYPENAME nested-name-specifier • TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 228 TEMPLATE shift, and go to state 229 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] TEMPLATE-opt go to state 230
44 alias-declaration → USING IDENTIFIER • attribute-specifier-seq-opt EQ defining-type-id SEMICOLON 82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty 84 | • attribute-specifier-seq $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 231
26 TYPENAME-opt → TYPENAME • $default reduce using rule 26 (TYPENAME-opt)
137 class-name → • IDENTIFIER 138 | • simple-template-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 228 elaborated-enum-specifier → ENUM • nested-name-specifier-opt IDENTIFIER 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 DECLTYPE shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 132 nested-name-specifier-opt go to state 133 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
137 class-name → • IDENTIFIER 138 | • simple-template-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 763 using-declarator → TYPENAME-opt • nested-name-specifier unqualified-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 DECLTYPE shift, and go to state 21 class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 232 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
767 using-enum-declaration → USING elaborated-enum-specifier • SEMICOLON SEMICOLON shift, and go to state 233
5 ELLIPSIS-opt → • %empty [COMMA, SEMICOLON] 6 | • ELLIPSIS 764 using-declarator-list → using-declarator • ELLIPSIS-opt ELLIPSIS shift, and go to state 155 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 234
762 using-declaration → USING using-declarator-list • SEMICOLON 765 using-declarator-list → using-declarator-list • COMMA using-declarator ELLIPSIS-opt COMMA shift, and go to state 235 SEMICOLON shift, and go to state 236
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 214 | DECLTYPE OPEN_PAREN • expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 277 expression → • assignment-expression 278 | • expression COMMA assignment-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 276 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
244 enum-key → ENUM CLASS • $default reduce using rule 244 (enum-key)
245 enum-key → ENUM STRUCT • $default reduce using rule 245 (enum-key)
21 TEMPLATE-opt → • %empty [IDENTIFIER] 22 | • TEMPLATE 456 nested-name-specifier → nested-name-specifier • IDENTIFIER SCOPE 457 | nested-name-specifier • TEMPLATE-opt simple-template-id SCOPE 459 nested-name-specifier-opt → nested-name-specifier • [IDENTIFIER] IDENTIFIER shift, and go to state 197 TEMPLATE shift, and go to state 229 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] IDENTIFIER [reduce using rule 459 (nested-name-specifier-opt)] TEMPLATE-opt go to state 199
228 elaborated-enum-specifier → ENUM nested-name-specifier-opt • IDENTIFIER IDENTIFIER shift, and go to state 306
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 158 constant-expression → • conditional-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 266 explicit-specifier → EXPLICIT OPEN_PAREN • constant-expression CLOSE_PAREN 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 307 constant-expression go to state 308 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 309 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
9 EXTERN-opt → • %empty [TEMPLATE] 10 | • EXTERN 13 INLINE-opt → • %empty [NAMESPACE] 14 | • INLINE 44 alias-declaration → • USING IDENTIFIER attribute-specifier-seq-opt EQ defining-type-id SEMICOLON 49 asm-declaration → • attribute-specifier-seq-opt ASM OPEN_PAREN string-literal CLOSE_PAREN SEMICOLON 71 attribute-declaration → • attribute-specifier-seq SEMICOLON 82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, ELLIPSIS, EXTERN, IDENTIFIER, INLINE, SCOPE, TYPENAME, VIRTUAL, USING, ALIGNAS, OPEN_PAREN, AND, ASM, OPEN_SQUARE, CLASS, STRUCT, UNION, AND_AND, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, MULT, COMPL, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 84 | • attribute-specifier-seq 107 block-declaration → • simple-declaration 108 | • asm-declaration 109 | • namespace-alias-definition 110 | • using-declaration 111 | • using-enum-declaration 112 | • using-directive 113 | • static_assert-declaration 114 | • alias-declaration 115 | • opaque-enum-declaration 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 193 declaration → • block-declaration 194 | • nodeclspec-function-declaration 195 | • function-definition 196 | • template-declaration 197 | • deduction-guide 198 | • explicit-instantiation 199 | • explicit-specialization 200 | • export-declaration 201 | • linkage-specification 202 | • namespace-definition 203 | • empty-declaration 204 | • attribute-declaration 205 | • module-import-declaration 206 declaration-seq → • declaration 207 | • declaration-seq declaration 208 declaration-seq-opt → • %empty [EXPORT, MODULE] 209 | • declaration-seq 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 215 deduction-guide → • explicit-specifier-opt template-name OPEN_PAREN parameter-declaration-clause CLOSE_PAREN DEREF simple-template-id SEMICOLON 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 233 empty-declaration → • SEMICOLON 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 264 explicit-instantiation → • EXTERN-opt TEMPLATE declaration 265 explicit-specialization → • TEMPLATE LESS GREATER declaration 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 268 explicit-specifier-opt → • %empty [IDENTIFIER] 269 | • explicit-specifier 270 export-declaration → • EXPORT declaration 271 | • EXPORT OPEN_BRACE declaration-seq-opt CLOSE_BRACE 272 | • EXPORT module-import-declaration 327 function-definition → • attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | • attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 332 global-module-fragment → MODULE SEMICOLON • declaration-seq-opt 390 linkage-specification → • EXTERN string-literal OPEN_BRACE declaration-seq-opt CLOSE_BRACE 391 | • EXTERN string-literal declaration 428 module-import-declaration → • IMPORT module-name attribute-specifier-seq-opt SEMICOLON 429 | • IMPORT module-partition attribute-specifier-seq-opt SEMICOLON 430 | • IMPORT header-name attribute-specifier-seq-opt SEMICOLON 443 named-namespace-definition → • INLINE-opt NAMESPACE attribute-specifier-seq-opt IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE 444 namespace-alias → • IDENTIFIER 445 namespace-alias-definition → • NAMESPACE IDENTIFIER EQ qualified-namespace-specifier SEMICOLON 447 namespace-definition → • named-namespace-definition 448 | • unnamed-namespace-definition 449 | • nested-namespace-definition 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 460 nested-namespace-definition → • NAMESPACE enclosing-namespace-specifier SCOPE INLINE-opt IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE 476 nodeclspec-function-declaration → • attribute-specifier-seq-opt declarator SEMICOLON 496 opaque-enum-declaration → • enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt SEMICOLON 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 639 simple-declaration → • decl-specifier-seq init-declarator-list-opt SEMICOLON 640 | • attribute-specifier-seq decl-specifier-seq init-declarator-list SEMICOLON 641 | • attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE initializer SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 675 static_assert-declaration → • STATIC_ASSERT OPEN_PAREN constant-expression CLOSE_PAREN SEMICOLON 676 | • STATIC_ASSERT OPEN_PAREN constant-expression COMMA string-literal CLOSE_PAREN SEMICOLON 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 689 template-declaration → • template-head declaration 690 | • template-head concept-definition 691 template-head → • TEMPLATE LESS template-parameter-list GREATER requires-clause-opt 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 753 unnamed-namespace-definition → • INLINE-opt NAMESPACE attribute-specifier-seq-opt OPEN_BRACE namespace-body CLOSE_BRACE 762 using-declaration → • USING using-declarator-list SEMICOLON 766 using-directive → • attribute-specifier-seq-opt USING NAMESPACE nested-name-specifier-opt namespace-name SEMICOLON 767 using-enum-declaration → • USING elaborated-enum-specifier SEMICOLON CONSTEXPR shift, and go to state 1 EXPORT shift, and go to state 2 EXTERN shift, and go to state 3 IDENTIFIER shift, and go to state 4 INLINE shift, and go to state 5 SCOPE shift, and go to state 6 TEMPLATE shift, and go to state 7 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 USING shift, and go to state 10 SEMICOLON shift, and go to state 11 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 IMPORT shift, and go to state 25 NAMESPACE shift, and go to state 26 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC_ASSERT shift, and go to state 41 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 CONSTEXPR [reduce using rule 83 (attribute-specifier-seq-opt)] EXPORT [reduce using rule 208 (declaration-seq-opt)] EXTERN [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] INLINE [reduce using rule 83 (attribute-specifier-seq-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] TEMPLATE [reduce using rule 9 (EXTERN-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] VIRTUAL [reduce using rule 83 (attribute-specifier-seq-opt)] USING [reduce using rule 83 (attribute-specifier-seq-opt)] CLASS [reduce using rule 83 (attribute-specifier-seq-opt)] STRUCT [reduce using rule 83 (attribute-specifier-seq-opt)] UNION [reduce using rule 83 (attribute-specifier-seq-opt)] CONST [reduce using rule 83 (attribute-specifier-seq-opt)] VOLATILE [reduce using rule 83 (attribute-specifier-seq-opt)] FRIEND [reduce using rule 83 (attribute-specifier-seq-opt)] TYPEDEF [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTEVAL [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTINIT [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] ENUM [reduce using rule 83 (attribute-specifier-seq-opt)] EXPLICIT [reduce using rule 83 (attribute-specifier-seq-opt)] MODULE reduce using rule 208 (declaration-seq-opt) NAMESPACE [reduce using rule 13 (INLINE-opt)] AUTO reduce using rule 83 (attribute-specifier-seq-opt) AUTO [reduce using rule 709 (type-constraint-opt)] CHAR [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR8_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR16_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR32_T [reduce using rule 83 (attribute-specifier-seq-opt)] WCHAR_T [reduce using rule 83 (attribute-specifier-seq-opt)] BOOL [reduce using rule 83 (attribute-specifier-seq-opt)] SHORT [reduce using rule 83 (attribute-specifier-seq-opt)] INT [reduce using rule 83 (attribute-specifier-seq-opt)] LONG [reduce using rule 83 (attribute-specifier-seq-opt)] SIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] UNSIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] FLOAT [reduce using rule 83 (attribute-specifier-seq-opt)] DOUBLE [reduce using rule 83 (attribute-specifier-seq-opt)] VOID [reduce using rule 83 (attribute-specifier-seq-opt)] STATIC [reduce using rule 83 (attribute-specifier-seq-opt)] THREAD_LOCAL [reduce using rule 83 (attribute-specifier-seq-opt)] MUTABLE [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 60 declaration-seq go to state 61 declaration-seq-opt go to state 310 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113
432 module-name-qualifier → IDENTIFIER • DOT DOT shift, and go to state 311
432 module-name-qualifier → • IDENTIFIER DOT 433 | • module-name-qualifier IDENTIFIER DOT 434 module-name-qualifier-opt → • %empty [IDENTIFIER] 435 | • module-name-qualifier 436 module-partition → COLON • module-name-qualifier-opt IDENTIFIER IDENTIFIER shift, and go to state 136 IDENTIFIER [reduce using rule 434 (module-name-qualifier-opt)] module-name-qualifier go to state 141 module-name-qualifier-opt go to state 312
339 header-name → HEADER_NAME • $default reduce using rule 339 (header-name)
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty 84 | • attribute-specifier-seq 430 module-import-declaration → IMPORT header-name • attribute-specifier-seq-opt SEMICOLON $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 313
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty 84 | • attribute-specifier-seq 428 module-import-declaration → IMPORT module-name • attribute-specifier-seq-opt SEMICOLON $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 314
433 module-name-qualifier → module-name-qualifier • IDENTIFIER DOT 435 module-name-qualifier-opt → module-name-qualifier • [IDENTIFIER] IDENTIFIER shift, and go to state 315 IDENTIFIER [reduce using rule 435 (module-name-qualifier-opt)]
431 module-name → module-name-qualifier-opt • IDENTIFIER IDENTIFIER shift, and go to state 316
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty 84 | • attribute-specifier-seq 429 module-import-declaration → IMPORT module-partition • attribute-specifier-seq-opt SEMICOLON $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 317
234 enclosing-namespace-specifier → IDENTIFIER • [SCOPE] 445 namespace-alias-definition → NAMESPACE IDENTIFIER • EQ qualified-namespace-specifier SEMICOLON EQ shift, and go to state 318 $default reduce using rule 234 (enclosing-namespace-specifier)
235 enclosing-namespace-specifier → enclosing-namespace-specifier • SCOPE INLINE-opt IDENTIFIER 460 nested-namespace-definition → NAMESPACE enclosing-namespace-specifier • SCOPE INLINE-opt IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE SCOPE shift, and go to state 319
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 158 constant-expression → • conditional-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 675 static_assert-declaration → STATIC_ASSERT OPEN_PAREN • constant-expression CLOSE_PAREN SEMICOLON 676 | STATIC_ASSERT OPEN_PAREN • constant-expression COMMA string-literal CLOSE_PAREN SEMICOLON 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 307 constant-expression go to state 320 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 309 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
9 EXTERN-opt → • %empty [TEMPLATE] 10 | • EXTERN 13 INLINE-opt → • %empty [NAMESPACE] 14 | • INLINE 44 alias-declaration → • USING IDENTIFIER attribute-specifier-seq-opt EQ defining-type-id SEMICOLON 49 asm-declaration → • attribute-specifier-seq-opt ASM OPEN_PAREN string-literal CLOSE_PAREN SEMICOLON 71 attribute-declaration → • attribute-specifier-seq SEMICOLON 82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, ELLIPSIS, EXTERN, IDENTIFIER, INLINE, SCOPE, TYPENAME, VIRTUAL, USING, ALIGNAS, OPEN_PAREN, AND, ASM, OPEN_SQUARE, CLASS, STRUCT, UNION, AND_AND, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, MULT, COMPL, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 84 | • attribute-specifier-seq 107 block-declaration → • simple-declaration 108 | • asm-declaration 109 | • namespace-alias-definition 110 | • using-declaration 111 | • using-enum-declaration 112 | • using-directive 113 | • static_assert-declaration 114 | • alias-declaration 115 | • opaque-enum-declaration 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 193 declaration → • block-declaration 194 | • nodeclspec-function-declaration 195 | • function-definition 196 | • template-declaration 197 | • deduction-guide 198 | • explicit-instantiation 199 | • explicit-specialization 200 | • export-declaration 201 | • linkage-specification 202 | • namespace-definition 203 | • empty-declaration 204 | • attribute-declaration 205 | • module-import-declaration 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 215 deduction-guide → • explicit-specifier-opt template-name OPEN_PAREN parameter-declaration-clause CLOSE_PAREN DEREF simple-template-id SEMICOLON 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 233 empty-declaration → • SEMICOLON 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 264 explicit-instantiation → • EXTERN-opt TEMPLATE declaration 264 | EXTERN-opt TEMPLATE • declaration 265 explicit-specialization → • TEMPLATE LESS GREATER declaration 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 268 explicit-specifier-opt → • %empty [IDENTIFIER] 269 | • explicit-specifier 270 export-declaration → • EXPORT declaration 271 | • EXPORT OPEN_BRACE declaration-seq-opt CLOSE_BRACE 272 | • EXPORT module-import-declaration 327 function-definition → • attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | • attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 390 linkage-specification → • EXTERN string-literal OPEN_BRACE declaration-seq-opt CLOSE_BRACE 391 | • EXTERN string-literal declaration 428 module-import-declaration → • IMPORT module-name attribute-specifier-seq-opt SEMICOLON 429 | • IMPORT module-partition attribute-specifier-seq-opt SEMICOLON 430 | • IMPORT header-name attribute-specifier-seq-opt SEMICOLON 443 named-namespace-definition → • INLINE-opt NAMESPACE attribute-specifier-seq-opt IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE 444 namespace-alias → • IDENTIFIER 445 namespace-alias-definition → • NAMESPACE IDENTIFIER EQ qualified-namespace-specifier SEMICOLON 447 namespace-definition → • named-namespace-definition 448 | • unnamed-namespace-definition 449 | • nested-namespace-definition 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 460 nested-namespace-definition → • NAMESPACE enclosing-namespace-specifier SCOPE INLINE-opt IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE 476 nodeclspec-function-declaration → • attribute-specifier-seq-opt declarator SEMICOLON 496 opaque-enum-declaration → • enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt SEMICOLON 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 639 simple-declaration → • decl-specifier-seq init-declarator-list-opt SEMICOLON 640 | • attribute-specifier-seq decl-specifier-seq init-declarator-list SEMICOLON 641 | • attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE initializer SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 675 static_assert-declaration → • STATIC_ASSERT OPEN_PAREN constant-expression CLOSE_PAREN SEMICOLON 676 | • STATIC_ASSERT OPEN_PAREN constant-expression COMMA string-literal CLOSE_PAREN SEMICOLON 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 689 template-declaration → • template-head declaration 690 | • template-head concept-definition 691 template-head → • TEMPLATE LESS template-parameter-list GREATER requires-clause-opt 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 753 unnamed-namespace-definition → • INLINE-opt NAMESPACE attribute-specifier-seq-opt OPEN_BRACE namespace-body CLOSE_BRACE 762 using-declaration → • USING using-declarator-list SEMICOLON 766 using-directive → • attribute-specifier-seq-opt USING NAMESPACE nested-name-specifier-opt namespace-name SEMICOLON 767 using-enum-declaration → • USING elaborated-enum-specifier SEMICOLON CONSTEXPR shift, and go to state 1 EXPORT shift, and go to state 2 EXTERN shift, and go to state 3 IDENTIFIER shift, and go to state 4 INLINE shift, and go to state 5 SCOPE shift, and go to state 6 TEMPLATE shift, and go to state 7 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 USING shift, and go to state 10 SEMICOLON shift, and go to state 11 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 IMPORT shift, and go to state 25 NAMESPACE shift, and go to state 26 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC_ASSERT shift, and go to state 41 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 CONSTEXPR [reduce using rule 83 (attribute-specifier-seq-opt)] EXTERN [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] INLINE [reduce using rule 83 (attribute-specifier-seq-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] TEMPLATE [reduce using rule 9 (EXTERN-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] VIRTUAL [reduce using rule 83 (attribute-specifier-seq-opt)] USING [reduce using rule 83 (attribute-specifier-seq-opt)] CLASS [reduce using rule 83 (attribute-specifier-seq-opt)] STRUCT [reduce using rule 83 (attribute-specifier-seq-opt)] UNION [reduce using rule 83 (attribute-specifier-seq-opt)] CONST [reduce using rule 83 (attribute-specifier-seq-opt)] VOLATILE [reduce using rule 83 (attribute-specifier-seq-opt)] FRIEND [reduce using rule 83 (attribute-specifier-seq-opt)] TYPEDEF [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTEVAL [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTINIT [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] ENUM [reduce using rule 83 (attribute-specifier-seq-opt)] EXPLICIT [reduce using rule 83 (attribute-specifier-seq-opt)] NAMESPACE [reduce using rule 13 (INLINE-opt)] AUTO reduce using rule 83 (attribute-specifier-seq-opt) AUTO [reduce using rule 709 (type-constraint-opt)] CHAR [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR8_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR16_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR32_T [reduce using rule 83 (attribute-specifier-seq-opt)] WCHAR_T [reduce using rule 83 (attribute-specifier-seq-opt)] BOOL [reduce using rule 83 (attribute-specifier-seq-opt)] SHORT [reduce using rule 83 (attribute-specifier-seq-opt)] INT [reduce using rule 83 (attribute-specifier-seq-opt)] LONG [reduce using rule 83 (attribute-specifier-seq-opt)] SIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] UNSIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] FLOAT [reduce using rule 83 (attribute-specifier-seq-opt)] DOUBLE [reduce using rule 83 (attribute-specifier-seq-opt)] VOID [reduce using rule 83 (attribute-specifier-seq-opt)] STATIC [reduce using rule 83 (attribute-specifier-seq-opt)] THREAD_LOCAL [reduce using rule 83 (attribute-specifier-seq-opt)] MUTABLE [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 321 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty 84 | • attribute-specifier-seq 443 named-namespace-definition → INLINE-opt NAMESPACE • attribute-specifier-seq-opt IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE 753 unnamed-namespace-definition → INLINE-opt NAMESPACE • attribute-specifier-seq-opt OPEN_BRACE namespace-body CLOSE_BRACE $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 322
679 storage-class-specifier → EXTERN • $default reduce using rule 679 (storage-class-specifier)
188 decl-specifier → INLINE • $default reduce using rule 188 (decl-specifier)
71 attribute-declaration → attribute-specifier-seq SEMICOLON • $default reduce using rule 71 (attribute-declaration)
5 ELLIPSIS-opt → • %empty [IDENTIFIER, SCOPE, OPERATOR, DECLTYPE, COMPL] 6 | • ELLIPSIS 137 class-name → • IDENTIFIER 138 | • simple-template-id 211 declarator → • ptr-declarator 212 | • noptr-declarator parameters-and-qualifiers trailing-return-type 213 declarator-id → • ELLIPSIS-opt id-expression 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 348 init-declarator → • declarator initializer-opt 349 | • declarator requires-clause 350 init-declarator-list → • init-declarator 351 | • init-declarator-list COMMA init-declarator 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 490 noptr-declarator → • declarator-id attribute-specifier-seq-opt 491 | • noptr-declarator parameters-and-qualifiers 492 | • noptr-declarator OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 493 | • OPEN_PAREN ptr-declarator CLOSE_PAREN 590 ptr-declarator → • noptr-declarator 591 | • ptr-operator ptr-declarator 592 ptr-operator → • MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 593 | • AND attribute-specifier-seq-opt 594 | • AND_AND attribute-specifier-seq-opt 595 | • nested-name-specifier MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 640 simple-declaration → attribute-specifier-seq decl-specifier-seq • init-declarator-list SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id ELLIPSIS shift, and go to state 155 IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 OPEN_PAREN shift, and go to state 158 AND shift, and go to state 159 AND_AND shift, and go to state 162 DECLTYPE shift, and go to state 21 MULT shift, and go to state 163 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] SCOPE [reduce using rule 5 (ELLIPSIS-opt)] DECLTYPE [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 164 class-name go to state 55 declarator go to state 182 declarator-id go to state 170 decltype-specifier go to state 120 enum-name go to state 71 init-declarator go to state 183 init-declarator-list go to state 323 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 noptr-declarator go to state 172 ptr-declarator go to state 173 ptr-operator go to state 174 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty 84 | • attribute-specifier-seq 239 enum-head → enum-key • attribute-specifier-seq-opt enum-head-name-opt enum-base-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 324
330 function-specifier → explicit-specifier • $default reduce using rule 330 (function-specifier)
6 ELLIPSIS-opt → ELLIPSIS • $default reduce using rule 6 (ELLIPSIS-opt)
766 using-directive → attribute-specifier-seq-opt USING • NAMESPACE nested-name-specifier-opt namespace-name SEMICOLON NAMESPACE shift, and go to state 325
45 alignment-specifier → ALIGNAS • OPEN_PAREN type-id ELLIPSIS-opt CLOSE_PAREN 46 | ALIGNAS • OPEN_PAREN constant-expression ELLIPSIS-opt CLOSE_PAREN OPEN_PAREN shift, and go to state 326
5 ELLIPSIS-opt → • %empty [IDENTIFIER, SCOPE, OPERATOR, DECLTYPE, COMPL] 6 | • ELLIPSIS 137 class-name → • IDENTIFIER 138 | • simple-template-id 213 declarator-id → • ELLIPSIS-opt id-expression 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 490 noptr-declarator → • declarator-id attribute-specifier-seq-opt 491 | • noptr-declarator parameters-and-qualifiers 492 | • noptr-declarator OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 493 | • OPEN_PAREN ptr-declarator CLOSE_PAREN 493 | OPEN_PAREN • ptr-declarator CLOSE_PAREN 590 ptr-declarator → • noptr-declarator 591 | • ptr-operator ptr-declarator 592 ptr-operator → • MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 593 | • AND attribute-specifier-seq-opt 594 | • AND_AND attribute-specifier-seq-opt 595 | • nested-name-specifier MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id ELLIPSIS shift, and go to state 155 IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 OPEN_PAREN shift, and go to state 158 AND shift, and go to state 159 AND_AND shift, and go to state 162 DECLTYPE shift, and go to state 21 MULT shift, and go to state 163 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] SCOPE [reduce using rule 5 (ELLIPSIS-opt)] DECLTYPE [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 164 class-name go to state 55 declarator-id go to state 170 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 noptr-declarator go to state 327 ptr-declarator go to state 328 ptr-operator go to state 174 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty 84 | • attribute-specifier-seq 593 ptr-operator → AND • attribute-specifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 329
49 asm-declaration → attribute-specifier-seq-opt ASM • OPEN_PAREN string-literal CLOSE_PAREN SEMICOLON OPEN_PAREN shift, and go to state 330
80 attribute-specifier → OPEN_SQUARE • OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE OPEN_SQUARE shift, and go to state 331
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty 84 | • attribute-specifier-seq 594 ptr-operator → AND_AND • attribute-specifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 332
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty 84 | • attribute-specifier-seq 592 ptr-operator → MULT • attribute-specifier-seq-opt cv-qualifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 333
137 class-name → • IDENTIFIER 138 | • simple-template-id 169 conversion-function-id → • OPERATOR conversion-type-id 213 declarator-id → ELLIPSIS-opt • id-expression 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 340 id-expression → • unqualified-id 341 | • qualified-id 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 SCOPE shift, and go to state 6 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 COMPL shift, and go to state 334 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 120 enum-name go to state 71 id-expression go to state 335 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 336 operator-function-id go to state 289 qualified-id go to state 293 simple-template-id go to state 297 template-id go to state 299 template-name go to state 102 type-name go to state 106 typedef-name go to state 108 unqualified-id go to state 304
81 attribute-specifier → alignment-specifier • $default reduce using rule 81 (attribute-specifier)
82 attribute-specifier-seq → attribute-specifier-seq-opt attribute-specifier • $default reduce using rule 82 (attribute-specifier-seq)
192 decl-specifier-seq-opt → decl-specifier-seq • [ELLIPSIS, IDENTIFIER, SCOPE, OPEN_PAREN, AND, AND_AND, OPERATOR, DECLTYPE, MULT, COMPL] 601 ref-qualifier → • AND 602 | • AND_AND 603 ref-qualifier-opt → • %empty [OPEN_SQUARE] 604 | • ref-qualifier 641 simple-declaration → attribute-specifier-seq-opt decl-specifier-seq • ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE initializer SEMICOLON AND shift, and go to state 337 AND_AND shift, and go to state 338 AND [reduce using rule 192 (decl-specifier-seq-opt)] OPEN_SQUARE reduce using rule 603 (ref-qualifier-opt) AND_AND [reduce using rule 192 (decl-specifier-seq-opt)] $default reduce using rule 192 (decl-specifier-seq-opt) ref-qualifier go to state 339 ref-qualifier-opt go to state 340
5 ELLIPSIS-opt → • %empty [IDENTIFIER, SCOPE, OPERATOR, DECLTYPE, COMPL] 6 | • ELLIPSIS 137 class-name → • IDENTIFIER 138 | • simple-template-id 211 declarator → • ptr-declarator 212 | • noptr-declarator parameters-and-qualifiers trailing-return-type 213 declarator-id → • ELLIPSIS-opt id-expression 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 327 function-definition → attribute-specifier-seq-opt decl-specifier-seq-opt • declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt • declarator requires-clause function-body 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 490 noptr-declarator → • declarator-id attribute-specifier-seq-opt 491 | • noptr-declarator parameters-and-qualifiers 492 | • noptr-declarator OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 493 | • OPEN_PAREN ptr-declarator CLOSE_PAREN 590 ptr-declarator → • noptr-declarator 591 | • ptr-operator ptr-declarator 592 ptr-operator → • MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 593 | • AND attribute-specifier-seq-opt 594 | • AND_AND attribute-specifier-seq-opt 595 | • nested-name-specifier MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id ELLIPSIS shift, and go to state 155 IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 OPEN_PAREN shift, and go to state 158 AND shift, and go to state 159 AND_AND shift, and go to state 162 DECLTYPE shift, and go to state 21 MULT shift, and go to state 163 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] SCOPE [reduce using rule 5 (ELLIPSIS-opt)] DECLTYPE [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 164 class-name go to state 55 declarator go to state 341 declarator-id go to state 170 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 noptr-declarator go to state 172 ptr-declarator go to state 173 ptr-operator go to state 174 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
476 nodeclspec-function-declaration → attribute-specifier-seq-opt declarator • SEMICOLON SEMICOLON shift, and go to state 342
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty 84 | • attribute-specifier-seq 490 noptr-declarator → declarator-id • attribute-specifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 343
21 TEMPLATE-opt → • %empty [IDENTIFIER] 22 | • TEMPLATE 456 nested-name-specifier → nested-name-specifier • IDENTIFIER SCOPE 457 | nested-name-specifier • TEMPLATE-opt simple-template-id SCOPE 459 nested-name-specifier-opt → nested-name-specifier • [IDENTIFIER] 595 ptr-operator → nested-name-specifier • MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 645 simple-type-specifier → nested-name-specifier • TEMPLATE simple-template-id IDENTIFIER shift, and go to state 197 TEMPLATE shift, and go to state 198 MULT shift, and go to state 344 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] IDENTIFIER [reduce using rule 459 (nested-name-specifier-opt)] TEMPLATE-opt go to state 199
212 declarator → noptr-declarator • parameters-and-qualifiers trailing-return-type 491 noptr-declarator → noptr-declarator • parameters-and-qualifiers 492 | noptr-declarator • OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 553 parameters-and-qualifiers → • OPEN_PAREN parameter-declaration-clause CLOSE_PAREN cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt 590 ptr-declarator → noptr-declarator • [COMMA, ELLIPSIS, EQ, SEMICOLON, OPEN_PAREN, CLOSE_PAREN, COLON, OPEN_BRACE, FINAL, GREATER, TRY, REQUIRES, OVERRIDE] OPEN_PAREN shift, and go to state 345 OPEN_SQUARE shift, and go to state 346 OPEN_PAREN [reduce using rule 590 (ptr-declarator)] $default reduce using rule 590 (ptr-declarator) parameters-and-qualifiers go to state 347
211 declarator → ptr-declarator • $default reduce using rule 211 (declarator)
5 ELLIPSIS-opt → • %empty [IDENTIFIER, SCOPE, OPERATOR, DECLTYPE, COMPL] 6 | • ELLIPSIS 137 class-name → • IDENTIFIER 138 | • simple-template-id 213 declarator-id → • ELLIPSIS-opt id-expression 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 490 noptr-declarator → • declarator-id attribute-specifier-seq-opt 491 | • noptr-declarator parameters-and-qualifiers 492 | • noptr-declarator OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 493 | • OPEN_PAREN ptr-declarator CLOSE_PAREN 590 ptr-declarator → • noptr-declarator 591 | • ptr-operator ptr-declarator 591 | ptr-operator • ptr-declarator 592 ptr-operator → • MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 593 | • AND attribute-specifier-seq-opt 594 | • AND_AND attribute-specifier-seq-opt 595 | • nested-name-specifier MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id ELLIPSIS shift, and go to state 155 IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 OPEN_PAREN shift, and go to state 158 AND shift, and go to state 159 AND_AND shift, and go to state 162 DECLTYPE shift, and go to state 21 MULT shift, and go to state 163 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] SCOPE [reduce using rule 5 (ELLIPSIS-opt)] DECLTYPE [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 164 class-name go to state 55 declarator-id go to state 170 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 noptr-declarator go to state 327 ptr-declarator go to state 348 ptr-operator go to state 174 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
36 access-specifier → • PRIVATE 37 | • PROTECTED 38 | • PUBLIC 44 alias-declaration → • USING IDENTIFIER attribute-specifier-seq-opt EQ defining-type-id SEMICOLON 82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, ELLIPSIS, EXTERN, IDENTIFIER, INLINE, SCOPE, TYPENAME, VIRTUAL, SEMICOLON, ALIGNAS, OPEN_PAREN, AND, OPEN_SQUARE, COLON, CLASS, STRUCT, UNION, AND_AND, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, MULT, COMPL, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 84 | • attribute-specifier-seq 142 class-specifier → class-head OPEN_BRACE • member-specification-opt CLOSE_BRACE 215 deduction-guide → • explicit-specifier-opt template-name OPEN_PAREN parameter-declaration-clause CLOSE_PAREN DEREF simple-template-id SEMICOLON 233 empty-declaration → • SEMICOLON 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 265 explicit-specialization → • TEMPLATE LESS GREATER declaration 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 268 explicit-specifier-opt → • %empty [IDENTIFIER] 269 | • explicit-specifier 327 function-definition → • attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | • attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 404 member-declaration → • attribute-specifier-seq-opt decl-specifier-seq-opt member-declarator-list-opt SEMICOLON 405 | • function-definition 406 | • using-declaration 407 | • using-enum-declaration 408 | • static_assert-declaration 409 | • template-declaration 410 | • explicit-specialization 411 | • deduction-guide 412 | • alias-declaration 413 | • opaque-enum-declaration 414 | • empty-declaration 423 member-specification → • member-declaration member-specification-opt 424 | • access-specifier COLON member-specification-opt 425 member-specification-opt → • %empty [CLOSE_BRACE] 426 | • member-specification 496 opaque-enum-declaration → • enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt SEMICOLON 675 static_assert-declaration → • STATIC_ASSERT OPEN_PAREN constant-expression CLOSE_PAREN SEMICOLON 676 | • STATIC_ASSERT OPEN_PAREN constant-expression COMMA string-literal CLOSE_PAREN SEMICOLON 689 template-declaration → • template-head declaration 690 | • template-head concept-definition 691 template-head → • TEMPLATE LESS template-parameter-list GREATER requires-clause-opt 762 using-declaration → • USING using-declarator-list SEMICOLON 767 using-enum-declaration → • USING elaborated-enum-specifier SEMICOLON TEMPLATE shift, and go to state 7 PRIVATE shift, and go to state 349 PROTECTED shift, and go to state 350 PUBLIC shift, and go to state 351 USING shift, and go to state 10 SEMICOLON shift, and go to state 11 ENUM shift, and go to state 352 EXPLICIT shift, and go to state 23 STATIC_ASSERT shift, and go to state 41 IDENTIFIER reduce using rule 83 (attribute-specifier-seq-opt) IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] SEMICOLON [reduce using rule 83 (attribute-specifier-seq-opt)] CLOSE_BRACE reduce using rule 425 (member-specification-opt) ENUM [reduce using rule 83 (attribute-specifier-seq-opt)] EXPLICIT [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) access-specifier go to state 353 alias-declaration go to state 354 attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 355 deduction-guide go to state 356 empty-declaration go to state 357 enum-key go to state 358 explicit-specialization go to state 359 explicit-specifier go to state 360 explicit-specifier-opt go to state 76 function-definition go to state 361 member-declaration go to state 362 member-specification go to state 363 member-specification-opt go to state 364 opaque-enum-declaration go to state 365 static_assert-declaration go to state 366 template-declaration go to state 367 template-head go to state 101 using-declaration go to state 368 using-enum-declaration go to state 369
84 attribute-specifier-seq-opt → attribute-specifier-seq • $default reduce using rule 84 (attribute-specifier-seq-opt)
45 alignment-specifier → • ALIGNAS OPEN_PAREN type-id ELLIPSIS-opt CLOSE_PAREN 46 | • ALIGNAS OPEN_PAREN constant-expression ELLIPSIS-opt CLOSE_PAREN 80 attribute-specifier → • OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE 81 | • alignment-specifier 82 attribute-specifier-seq → attribute-specifier-seq-opt • attribute-specifier 99 base-clause → • COLON base-specifier-list 100 base-clause-opt → • %empty [OPEN_BRACE] 101 | • base-clause 131 class-head → class-key attribute-specifier-seq-opt • class-head-name class-virt-specifier-opt base-clause-opt 132 | class-key attribute-specifier-seq-opt • base-clause-opt 133 class-head-name → • nested-name-specifier-opt class-name 137 class-name → • IDENTIFIER 138 | • simple-template-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 229 elaborated-type-specifier → class-key attribute-specifier-seq-opt • nested-name-specifier-opt IDENTIFIER 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 ALIGNAS shift, and go to state 157 OPEN_SQUARE shift, and go to state 161 COLON shift, and go to state 370 DECLTYPE shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] $default reduce using rule 100 (base-clause-opt) alignment-specifier go to state 165 attribute-specifier go to state 166 base-clause go to state 371 base-clause-opt go to state 372 class-head-name go to state 373 class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 132 nested-name-specifier-opt go to state 374 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
21 TEMPLATE-opt → • %empty [IDENTIFIER] 22 | • TEMPLATE 231 elaborated-type-specifier → class-key nested-name-specifier • TEMPLATE-opt simple-template-id 456 nested-name-specifier → nested-name-specifier • IDENTIFIER SCOPE 457 | nested-name-specifier • TEMPLATE-opt simple-template-id SCOPE IDENTIFIER shift, and go to state 197 TEMPLATE shift, and go to state 229 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] TEMPLATE-opt go to state 375
138 class-name → simple-template-id • [SCOPE] 230 elaborated-type-specifier → class-key simple-template-id • [COMMA, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, PLUS, MINUS, USING, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, ASM, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, OPEN_SQUARE, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, CLASS, STRUCT, UNION, FINAL, SPACESHIP, CONCEPT, QUERY, AND_AND, OR_OR, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, DOT, ENUM, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, EXPLICIT, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR, TRY, IMPORT, NAMESPACE, REQUIRES, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE, OVERRIDE] 731 typedef-name → simple-template-id • [SCOPE] SCOPE reduce using rule 138 (class-name) SCOPE [reduce using rule 230 (elaborated-type-specifier)] SCOPE [reduce using rule 731 (typedef-name)] $default reduce using rule 230 (elaborated-type-specifier)
45 alignment-specifier → • ALIGNAS OPEN_PAREN type-id ELLIPSIS-opt CLOSE_PAREN 46 | • ALIGNAS OPEN_PAREN constant-expression ELLIPSIS-opt CLOSE_PAREN 80 attribute-specifier → • OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE 81 | • alignment-specifier 82 attribute-specifier-seq → attribute-specifier-seq-opt • attribute-specifier 189 decl-specifier-seq → decl-specifier attribute-specifier-seq-opt • [COMMA, ELLIPSIS, IDENTIFIER, NOEXCEPT, SCOPE, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, OPEN_SQUARE, COLON, OPEN_BRACE, AND_AND, OPERATOR, DECLTYPE, DEREF, GREATER, MULT, REQUIRES, COMPL] ALIGNAS shift, and go to state 157 OPEN_SQUARE shift, and go to state 161 ALIGNAS [reduce using rule 189 (decl-specifier-seq)] OPEN_SQUARE [reduce using rule 189 (decl-specifier-seq)] $default reduce using rule 189 (decl-specifier-seq) alignment-specifier go to state 165 attribute-specifier go to state 166
190 decl-specifier-seq → decl-specifier decl-specifier-seq • $default reduce using rule 190 (decl-specifier-seq)
116 brace-or-equal-initializer → • EQ initializer-clause 117 | • braced-init-list 120 braced-init-list → • OPEN_BRACE initializer-list COMMA-opt CLOSE_BRACE 121 | • OPEN_BRACE designated-initializer-list COMMA-opt CLOSE_BRACE 122 | • OPEN_BRACE CLOSE_BRACE 348 init-declarator → declarator • initializer-opt 349 | declarator • requires-clause 359 initializer → • brace-or-equal-initializer 360 | • OPEN_PAREN expression-list CLOSE_PAREN 365 initializer-opt → • %empty [COMMA, SEMICOLON] 366 | • initializer 620 requires-clause → • REQUIRES constraint-logical-or-expression EQ shift, and go to state 376 OPEN_PAREN shift, and go to state 377 OPEN_BRACE shift, and go to state 378 REQUIRES shift, and go to state 379 $default reduce using rule 365 (initializer-opt) brace-or-equal-initializer go to state 380 braced-init-list go to state 381 initializer go to state 382 initializer-opt go to state 383 requires-clause go to state 384
350 init-declarator-list → init-declarator • $default reduce using rule 350 (init-declarator-list)
351 init-declarator-list → init-declarator-list • COMMA init-declarator 353 init-declarator-list-opt → init-declarator-list • [SEMICOLON] COMMA shift, and go to state 385 $default reduce using rule 353 (init-declarator-list-opt)
639 simple-declaration → decl-specifier-seq init-declarator-list-opt • SEMICOLON SEMICOLON shift, and go to state 386
21 TEMPLATE-opt → • %empty [IDENTIFIER] 22 | • TEMPLATE 456 nested-name-specifier → nested-name-specifier • IDENTIFIER SCOPE 457 | nested-name-specifier • TEMPLATE-opt simple-template-id SCOPE 595 ptr-operator → nested-name-specifier • MULT attribute-specifier-seq-opt cv-qualifier-seq-opt IDENTIFIER shift, and go to state 197 TEMPLATE shift, and go to state 229 MULT shift, and go to state 344 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] TEMPLATE-opt go to state 199
207 declaration-seq → declaration-seq declaration • $default reduce using rule 207 (declaration-seq)
455 nested-name-specifier → decltype-specifier SCOPE • $default reduce using rule 455 (nested-name-specifier)
247 enum-specifier → enum-head OPEN_BRACE • enumerator-list-opt CLOSE_BRACE 248 | enum-head OPEN_BRACE • enumerator-list COMMA CLOSE_BRACE 249 enumerator → • IDENTIFIER attribute-specifier-seq-opt 250 enumerator-definition → • enumerator 251 | • enumerator EQ constant-expression 252 enumerator-list → • enumerator-definition 253 | • enumerator-list COMMA enumerator-definition 254 enumerator-list-opt → • %empty [CLOSE_BRACE] 255 | • enumerator-list IDENTIFIER shift, and go to state 387 $default reduce using rule 254 (enumerator-list-opt) enumerator go to state 388 enumerator-definition go to state 389 enumerator-list go to state 390 enumerator-list-opt go to state 391
45 alignment-specifier → • ALIGNAS OPEN_PAREN type-id ELLIPSIS-opt CLOSE_PAREN 46 | • ALIGNAS OPEN_PAREN constant-expression ELLIPSIS-opt CLOSE_PAREN 80 attribute-specifier → • OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE 81 | • alignment-specifier 82 attribute-specifier-seq → attribute-specifier-seq-opt • attribute-specifier 137 class-name → • IDENTIFIER 138 | • simple-template-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 239 enum-head → enum-key attribute-specifier-seq-opt • enum-head-name-opt enum-base-opt 240 enum-head-name → • nested-name-specifier-opt IDENTIFIER 241 enum-head-name-opt → • %empty [COLON, OPEN_BRACE] 242 | • enum-head-name 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 496 opaque-enum-declaration → enum-key attribute-specifier-seq-opt • enum-head-name enum-base-opt SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 ALIGNAS shift, and go to state 157 OPEN_SQUARE shift, and go to state 161 DECLTYPE shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] $default reduce using rule 241 (enum-head-name-opt) alignment-specifier go to state 165 attribute-specifier go to state 166 class-name go to state 55 decltype-specifier go to state 120 enum-head-name go to state 392 enum-head-name-opt go to state 393 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 132 nested-name-specifier-opt go to state 394 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
695 template-name → IDENTIFIER • $default reduce using rule 695 (template-name)
215 deduction-guide → explicit-specifier-opt template-name • OPEN_PAREN parameter-declaration-clause CLOSE_PAREN DEREF simple-template-id SEMICOLON OPEN_PAREN shift, and go to state 395
8 EXPORT-opt → EXPORT • $default reduce using rule 8 (EXPORT-opt)
427 module-declaration → EXPORT-opt • MODULE module-name module-partition-opt attribute-specifier-seq-opt SEMICOLON MODULE shift, and go to state 396
9 EXTERN-opt → • %empty [TEMPLATE] 10 | • EXTERN 13 INLINE-opt → • %empty [NAMESPACE] 14 | • INLINE 44 alias-declaration → • USING IDENTIFIER attribute-specifier-seq-opt EQ defining-type-id SEMICOLON 49 asm-declaration → • attribute-specifier-seq-opt ASM OPEN_PAREN string-literal CLOSE_PAREN SEMICOLON 71 attribute-declaration → • attribute-specifier-seq SEMICOLON 82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, ELLIPSIS, EXTERN, IDENTIFIER, INLINE, SCOPE, TYPENAME, VIRTUAL, USING, ALIGNAS, OPEN_PAREN, AND, ASM, OPEN_SQUARE, CLASS, STRUCT, UNION, AND_AND, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, MULT, COMPL, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 84 | • attribute-specifier-seq 107 block-declaration → • simple-declaration 108 | • asm-declaration 109 | • namespace-alias-definition 110 | • using-declaration 111 | • using-enum-declaration 112 | • using-directive 113 | • static_assert-declaration 114 | • alias-declaration 115 | • opaque-enum-declaration 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 193 declaration → • block-declaration 194 | • nodeclspec-function-declaration 195 | • function-definition 196 | • template-declaration 197 | • deduction-guide 198 | • explicit-instantiation 199 | • explicit-specialization 200 | • export-declaration 201 | • linkage-specification 202 | • namespace-definition 203 | • empty-declaration 204 | • attribute-declaration 205 | • module-import-declaration 206 declaration-seq → • declaration 207 | • declaration-seq declaration 208 declaration-seq-opt → • %empty [$end, MODULE] 209 | • declaration-seq 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 215 deduction-guide → • explicit-specifier-opt template-name OPEN_PAREN parameter-declaration-clause CLOSE_PAREN DEREF simple-template-id SEMICOLON 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 233 empty-declaration → • SEMICOLON 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 264 explicit-instantiation → • EXTERN-opt TEMPLATE declaration 265 explicit-specialization → • TEMPLATE LESS GREATER declaration 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 268 explicit-specifier-opt → • %empty [IDENTIFIER] 269 | • explicit-specifier 270 export-declaration → • EXPORT declaration 271 | • EXPORT OPEN_BRACE declaration-seq-opt CLOSE_BRACE 272 | • EXPORT module-import-declaration 327 function-definition → • attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | • attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 390 linkage-specification → • EXTERN string-literal OPEN_BRACE declaration-seq-opt CLOSE_BRACE 391 | • EXTERN string-literal declaration 428 module-import-declaration → • IMPORT module-name attribute-specifier-seq-opt SEMICOLON 429 | • IMPORT module-partition attribute-specifier-seq-opt SEMICOLON 430 | • IMPORT header-name attribute-specifier-seq-opt SEMICOLON 443 named-namespace-definition → • INLINE-opt NAMESPACE attribute-specifier-seq-opt IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE 444 namespace-alias → • IDENTIFIER 445 namespace-alias-definition → • NAMESPACE IDENTIFIER EQ qualified-namespace-specifier SEMICOLON 447 namespace-definition → • named-namespace-definition 448 | • unnamed-namespace-definition 449 | • nested-namespace-definition 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 460 nested-namespace-definition → • NAMESPACE enclosing-namespace-specifier SCOPE INLINE-opt IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE 476 nodeclspec-function-declaration → • attribute-specifier-seq-opt declarator SEMICOLON 496 opaque-enum-declaration → • enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt SEMICOLON 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 639 simple-declaration → • decl-specifier-seq init-declarator-list-opt SEMICOLON 640 | • attribute-specifier-seq decl-specifier-seq init-declarator-list SEMICOLON 641 | • attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE initializer SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 675 static_assert-declaration → • STATIC_ASSERT OPEN_PAREN constant-expression CLOSE_PAREN SEMICOLON 676 | • STATIC_ASSERT OPEN_PAREN constant-expression COMMA string-literal CLOSE_PAREN SEMICOLON 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 689 template-declaration → • template-head declaration 690 | • template-head concept-definition 691 template-head → • TEMPLATE LESS template-parameter-list GREATER requires-clause-opt 695 template-name → • IDENTIFIER 705 translation-unit → global-module-fragment-opt module-declaration • declaration-seq-opt private-module-fragment-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 753 unnamed-namespace-definition → • INLINE-opt NAMESPACE attribute-specifier-seq-opt OPEN_BRACE namespace-body CLOSE_BRACE 762 using-declaration → • USING using-declarator-list SEMICOLON 766 using-directive → • attribute-specifier-seq-opt USING NAMESPACE nested-name-specifier-opt namespace-name SEMICOLON 767 using-enum-declaration → • USING elaborated-enum-specifier SEMICOLON CONSTEXPR shift, and go to state 1 EXPORT shift, and go to state 2 EXTERN shift, and go to state 3 IDENTIFIER shift, and go to state 4 INLINE shift, and go to state 5 SCOPE shift, and go to state 6 TEMPLATE shift, and go to state 7 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 USING shift, and go to state 10 SEMICOLON shift, and go to state 11 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 IMPORT shift, and go to state 25 NAMESPACE shift, and go to state 26 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC_ASSERT shift, and go to state 41 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 $end reduce using rule 208 (declaration-seq-opt) CONSTEXPR [reduce using rule 83 (attribute-specifier-seq-opt)] EXTERN [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] INLINE [reduce using rule 83 (attribute-specifier-seq-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] TEMPLATE [reduce using rule 9 (EXTERN-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] VIRTUAL [reduce using rule 83 (attribute-specifier-seq-opt)] USING [reduce using rule 83 (attribute-specifier-seq-opt)] CLASS [reduce using rule 83 (attribute-specifier-seq-opt)] STRUCT [reduce using rule 83 (attribute-specifier-seq-opt)] UNION [reduce using rule 83 (attribute-specifier-seq-opt)] CONST [reduce using rule 83 (attribute-specifier-seq-opt)] VOLATILE [reduce using rule 83 (attribute-specifier-seq-opt)] FRIEND [reduce using rule 83 (attribute-specifier-seq-opt)] TYPEDEF [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTEVAL [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTINIT [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] ENUM [reduce using rule 83 (attribute-specifier-seq-opt)] EXPLICIT [reduce using rule 83 (attribute-specifier-seq-opt)] MODULE reduce using rule 208 (declaration-seq-opt) NAMESPACE [reduce using rule 13 (INLINE-opt)] AUTO reduce using rule 83 (attribute-specifier-seq-opt) AUTO [reduce using rule 709 (type-constraint-opt)] CHAR [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR8_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR16_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR32_T [reduce using rule 83 (attribute-specifier-seq-opt)] WCHAR_T [reduce using rule 83 (attribute-specifier-seq-opt)] BOOL [reduce using rule 83 (attribute-specifier-seq-opt)] SHORT [reduce using rule 83 (attribute-specifier-seq-opt)] INT [reduce using rule 83 (attribute-specifier-seq-opt)] LONG [reduce using rule 83 (attribute-specifier-seq-opt)] SIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] UNSIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] FLOAT [reduce using rule 83 (attribute-specifier-seq-opt)] DOUBLE [reduce using rule 83 (attribute-specifier-seq-opt)] VOID [reduce using rule 83 (attribute-specifier-seq-opt)] STATIC [reduce using rule 83 (attribute-specifier-seq-opt)] THREAD_LOCAL [reduce using rule 83 (attribute-specifier-seq-opt)] MUTABLE [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 60 declaration-seq go to state 61 declaration-seq-opt go to state 397 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113
454 nested-name-specifier → namespace-name SCOPE • $default reduce using rule 454 (nested-name-specifier)
456 nested-name-specifier → nested-name-specifier IDENTIFIER • SCOPE SCOPE shift, and go to state 398
22 TEMPLATE-opt → TEMPLATE • [IDENTIFIER, OPERATOR, COMPL] 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 645 simple-type-specifier → nested-name-specifier TEMPLATE • simple-template-id 695 template-name → • IDENTIFIER IDENTIFIER shift, and go to state 191 IDENTIFIER [reduce using rule 22 (TEMPLATE-opt)] $default reduce using rule 22 (TEMPLATE-opt) simple-template-id go to state 399 template-name go to state 102
457 nested-name-specifier → nested-name-specifier TEMPLATE-opt • simple-template-id SCOPE 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER IDENTIFIER shift, and go to state 191 simple-template-id go to state 400 template-name go to state 102
137 class-name → IDENTIFIER • [COMMA, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, PLUS, MINUS, USING, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, ASM, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, OPEN_SQUARE, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, CLASS, STRUCT, UNION, FINAL, SPACESHIP, CONCEPT, QUERY, AND_AND, OR_OR, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, DOT, ENUM, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, EXPLICIT, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR, TRY, IMPORT, NAMESPACE, REQUIRES, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE, OVERRIDE] 151 concept-name → IDENTIFIER • [DECLTYPE, LESS, AUTO] 246 enum-name → IDENTIFIER • [COMMA, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, PLUS, MINUS, USING, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, ASM, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, OPEN_SQUARE, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, CLASS, STRUCT, UNION, FINAL, SPACESHIP, CONCEPT, QUERY, AND_AND, OR_OR, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, DOT, ENUM, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, EXPLICIT, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR, TRY, IMPORT, NAMESPACE, REQUIRES, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE, OVERRIDE] 695 template-name → IDENTIFIER • [COMMA, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, PLUS, MINUS, USING, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, ASM, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, OPEN_SQUARE, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, CLASS, STRUCT, UNION, FINAL, SPACESHIP, CONCEPT, QUERY, AND_AND, OR_OR, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, DOT, ENUM, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, EXPLICIT, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR, TRY, IMPORT, NAMESPACE, REQUIRES, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE, OVERRIDE] 730 typedef-name → IDENTIFIER • [COMMA, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, PLUS, MINUS, USING, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, ASM, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, OPEN_SQUARE, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, CLASS, STRUCT, UNION, FINAL, SPACESHIP, CONCEPT, QUERY, AND_AND, OR_OR, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, DOT, ENUM, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, EXPLICIT, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR, TRY, IMPORT, NAMESPACE, REQUIRES, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE, OVERRIDE] COMMA reduce using rule 137 (class-name) COMMA [reduce using rule 246 (enum-name)] COMMA [reduce using rule 695 (template-name)] COMMA [reduce using rule 730 (typedef-name)] CONSTEXPR reduce using rule 137 (class-name) CONSTEXPR [reduce using rule 246 (enum-name)] CONSTEXPR [reduce using rule 695 (template-name)] CONSTEXPR [reduce using rule 730 (typedef-name)] ELLIPSIS reduce using rule 137 (class-name) ELLIPSIS [reduce using rule 246 (enum-name)] ELLIPSIS [reduce using rule 695 (template-name)] ELLIPSIS [reduce using rule 730 (typedef-name)] EXPORT reduce using rule 137 (class-name) EXPORT [reduce using rule 246 (enum-name)] EXPORT [reduce using rule 695 (template-name)] EXPORT [reduce using rule 730 (typedef-name)] EXTERN reduce using rule 137 (class-name) EXTERN [reduce using rule 246 (enum-name)] EXTERN [reduce using rule 695 (template-name)] EXTERN [reduce using rule 730 (typedef-name)] IDENTIFIER reduce using rule 137 (class-name) IDENTIFIER [reduce using rule 246 (enum-name)] IDENTIFIER [reduce using rule 695 (template-name)] IDENTIFIER [reduce using rule 730 (typedef-name)] INLINE reduce using rule 137 (class-name) INLINE [reduce using rule 246 (enum-name)] INLINE [reduce using rule 695 (template-name)] INLINE [reduce using rule 730 (typedef-name)] NOEXCEPT reduce using rule 137 (class-name) NOEXCEPT [reduce using rule 246 (enum-name)] NOEXCEPT [reduce using rule 695 (template-name)] NOEXCEPT [reduce using rule 730 (typedef-name)] SCOPE reduce using rule 137 (class-name) SCOPE [reduce using rule 246 (enum-name)] SCOPE [reduce using rule 695 (template-name)] SCOPE [reduce using rule 730 (typedef-name)] TEMPLATE reduce using rule 137 (class-name) TEMPLATE [reduce using rule 246 (enum-name)] TEMPLATE [reduce using rule 695 (template-name)] TEMPLATE [reduce using rule 730 (typedef-name)] TYPENAME reduce using rule 137 (class-name) TYPENAME [reduce using rule 246 (enum-name)] TYPENAME [reduce using rule 695 (template-name)] TYPENAME [reduce using rule 730 (typedef-name)] VIRTUAL reduce using rule 137 (class-name) VIRTUAL [reduce using rule 246 (enum-name)] VIRTUAL [reduce using rule 695 (template-name)] VIRTUAL [reduce using rule 730 (typedef-name)] PLUS reduce using rule 137 (class-name) PLUS [reduce using rule 246 (enum-name)] PLUS [reduce using rule 695 (template-name)] PLUS [reduce using rule 730 (typedef-name)] MINUS reduce using rule 137 (class-name) MINUS [reduce using rule 246 (enum-name)] MINUS [reduce using rule 695 (template-name)] MINUS [reduce using rule 730 (typedef-name)] USING reduce using rule 137 (class-name) USING [reduce using rule 246 (enum-name)] USING [reduce using rule 695 (template-name)] USING [reduce using rule 730 (typedef-name)] EQ reduce using rule 137 (class-name) EQ [reduce using rule 246 (enum-name)] EQ [reduce using rule 695 (template-name)] EQ [reduce using rule 730 (typedef-name)] SEMICOLON reduce using rule 137 (class-name) SEMICOLON [reduce using rule 246 (enum-name)] SEMICOLON [reduce using rule 695 (template-name)] SEMICOLON [reduce using rule 730 (typedef-name)] ALIGNAS reduce using rule 137 (class-name) ALIGNAS [reduce using rule 246 (enum-name)] ALIGNAS [reduce using rule 695 (template-name)] ALIGNAS [reduce using rule 730 (typedef-name)] OPEN_PAREN reduce using rule 137 (class-name) OPEN_PAREN [reduce using rule 246 (enum-name)] OPEN_PAREN [reduce using rule 695 (template-name)] OPEN_PAREN [reduce using rule 730 (typedef-name)] CLOSE_PAREN reduce using rule 137 (class-name) CLOSE_PAREN [reduce using rule 246 (enum-name)] CLOSE_PAREN [reduce using rule 695 (template-name)] CLOSE_PAREN [reduce using rule 730 (typedef-name)] AND reduce using rule 137 (class-name) AND [reduce using rule 246 (enum-name)] AND [reduce using rule 695 (template-name)] AND [reduce using rule 730 (typedef-name)] ASM reduce using rule 137 (class-name) ASM [reduce using rule 246 (enum-name)] ASM [reduce using rule 695 (template-name)] ASM [reduce using rule 730 (typedef-name)] MULT_EQ reduce using rule 137 (class-name) MULT_EQ [reduce using rule 246 (enum-name)] MULT_EQ [reduce using rule 695 (template-name)] MULT_EQ [reduce using rule 730 (typedef-name)] DIV_EQ reduce using rule 137 (class-name) DIV_EQ [reduce using rule 246 (enum-name)] DIV_EQ [reduce using rule 695 (template-name)] DIV_EQ [reduce using rule 730 (typedef-name)] MOD_EQ reduce using rule 137 (class-name) MOD_EQ [reduce using rule 246 (enum-name)] MOD_EQ [reduce using rule 695 (template-name)] MOD_EQ [reduce using rule 730 (typedef-name)] PLUS_EQ reduce using rule 137 (class-name) PLUS_EQ [reduce using rule 246 (enum-name)] PLUS_EQ [reduce using rule 695 (template-name)] PLUS_EQ [reduce using rule 730 (typedef-name)] MINUS_EQ reduce using rule 137 (class-name) MINUS_EQ [reduce using rule 246 (enum-name)] MINUS_EQ [reduce using rule 695 (template-name)] MINUS_EQ [reduce using rule 730 (typedef-name)] RSHIFT_EQ reduce using rule 137 (class-name) RSHIFT_EQ [reduce using rule 246 (enum-name)] RSHIFT_EQ [reduce using rule 695 (template-name)] RSHIFT_EQ [reduce using rule 730 (typedef-name)] LSHIFT_EQ reduce using rule 137 (class-name) LSHIFT_EQ [reduce using rule 246 (enum-name)] LSHIFT_EQ [reduce using rule 695 (template-name)] LSHIFT_EQ [reduce using rule 730 (typedef-name)] AND_EQ reduce using rule 137 (class-name) AND_EQ [reduce using rule 246 (enum-name)] AND_EQ [reduce using rule 695 (template-name)] AND_EQ [reduce using rule 730 (typedef-name)] XOR_EQ reduce using rule 137 (class-name) XOR_EQ [reduce using rule 246 (enum-name)] XOR_EQ [reduce using rule 695 (template-name)] XOR_EQ [reduce using rule 730 (typedef-name)] OR_EQ reduce using rule 137 (class-name) OR_EQ [reduce using rule 246 (enum-name)] OR_EQ [reduce using rule 695 (template-name)] OR_EQ [reduce using rule 730 (typedef-name)] OPEN_SQUARE reduce using rule 137 (class-name) OPEN_SQUARE [reduce using rule 246 (enum-name)] OPEN_SQUARE [reduce using rule 695 (template-name)] OPEN_SQUARE [reduce using rule 730 (typedef-name)] CLOSE_SQUARE reduce using rule 137 (class-name) CLOSE_SQUARE [reduce using rule 246 (enum-name)] CLOSE_SQUARE [reduce using rule 695 (template-name)] CLOSE_SQUARE [reduce using rule 730 (typedef-name)] COLON reduce using rule 137 (class-name) COLON [reduce using rule 246 (enum-name)] COLON [reduce using rule 695 (template-name)] COLON [reduce using rule 730 (typedef-name)] OPEN_BRACE reduce using rule 137 (class-name) OPEN_BRACE [reduce using rule 246 (enum-name)] OPEN_BRACE [reduce using rule 695 (template-name)] OPEN_BRACE [reduce using rule 730 (typedef-name)] CLOSE_BRACE reduce using rule 137 (class-name) CLOSE_BRACE [reduce using rule 246 (enum-name)] CLOSE_BRACE [reduce using rule 695 (template-name)] CLOSE_BRACE [reduce using rule 730 (typedef-name)] CLASS reduce using rule 137 (class-name) CLASS [reduce using rule 246 (enum-name)] CLASS [reduce using rule 695 (template-name)] CLASS [reduce using rule 730 (typedef-name)] STRUCT reduce using rule 137 (class-name) STRUCT [reduce using rule 246 (enum-name)] STRUCT [reduce using rule 695 (template-name)] STRUCT [reduce using rule 730 (typedef-name)] UNION reduce using rule 137 (class-name) UNION [reduce using rule 246 (enum-name)] UNION [reduce using rule 695 (template-name)] UNION [reduce using rule 730 (typedef-name)] FINAL reduce using rule 137 (class-name) FINAL [reduce using rule 246 (enum-name)] FINAL [reduce using rule 695 (template-name)] FINAL [reduce using rule 730 (typedef-name)] SPACESHIP reduce using rule 137 (class-name) SPACESHIP [reduce using rule 246 (enum-name)] SPACESHIP [reduce using rule 695 (template-name)] SPACESHIP [reduce using rule 730 (typedef-name)] CONCEPT reduce using rule 137 (class-name) CONCEPT [reduce using rule 246 (enum-name)] CONCEPT [reduce using rule 695 (template-name)] CONCEPT [reduce using rule 730 (typedef-name)] QUERY reduce using rule 137 (class-name) QUERY [reduce using rule 246 (enum-name)] QUERY [reduce using rule 695 (template-name)] QUERY [reduce using rule 730 (typedef-name)] AND_AND reduce using rule 137 (class-name) AND_AND [reduce using rule 246 (enum-name)] AND_AND [reduce using rule 695 (template-name)] AND_AND [reduce using rule 730 (typedef-name)] OR_OR reduce using rule 137 (class-name) OR_OR [reduce using rule 246 (enum-name)] OR_OR [reduce using rule 695 (template-name)] OR_OR [reduce using rule 730 (typedef-name)] OPERATOR reduce using rule 137 (class-name) OPERATOR [reduce using rule 246 (enum-name)] OPERATOR [reduce using rule 695 (template-name)] OPERATOR [reduce using rule 730 (typedef-name)] CONST reduce using rule 137 (class-name) CONST [reduce using rule 246 (enum-name)] CONST [reduce using rule 695 (template-name)] CONST [reduce using rule 730 (typedef-name)] VOLATILE reduce using rule 137 (class-name) VOLATILE [reduce using rule 246 (enum-name)] VOLATILE [reduce using rule 695 (template-name)] VOLATILE [reduce using rule 730 (typedef-name)] FRIEND reduce using rule 137 (class-name) FRIEND [reduce using rule 246 (enum-name)] FRIEND [reduce using rule 695 (template-name)] FRIEND [reduce using rule 730 (typedef-name)] TYPEDEF reduce using rule 137 (class-name) TYPEDEF [reduce using rule 246 (enum-name)] TYPEDEF [reduce using rule 695 (template-name)] TYPEDEF [reduce using rule 730 (typedef-name)] CONSTEVAL reduce using rule 137 (class-name) CONSTEVAL [reduce using rule 246 (enum-name)] CONSTEVAL [reduce using rule 695 (template-name)] CONSTEVAL [reduce using rule 730 (typedef-name)] CONSTINIT reduce using rule 137 (class-name) CONSTINIT [reduce using rule 246 (enum-name)] CONSTINIT [reduce using rule 695 (template-name)] CONSTINIT [reduce using rule 730 (typedef-name)] DECLTYPE reduce using rule 137 (class-name) DECLTYPE [reduce using rule 151 (concept-name)] DECLTYPE [reduce using rule 246 (enum-name)] DECLTYPE [reduce using rule 695 (template-name)] DECLTYPE [reduce using rule 730 (typedef-name)] DEREF reduce using rule 137 (class-name) DEREF [reduce using rule 246 (enum-name)] DEREF [reduce using rule 695 (template-name)] DEREF [reduce using rule 730 (typedef-name)] DOT reduce using rule 137 (class-name) DOT [reduce using rule 246 (enum-name)] DOT [reduce using rule 695 (template-name)] DOT [reduce using rule 730 (typedef-name)] ENUM reduce using rule 137 (class-name) ENUM [reduce using rule 246 (enum-name)] ENUM [reduce using rule 695 (template-name)] ENUM [reduce using rule 730 (typedef-name)] EQ_EQ reduce using rule 137 (class-name) EQ_EQ [reduce using rule 246 (enum-name)] EQ_EQ [reduce using rule 695 (template-name)] EQ_EQ [reduce using rule 730 (typedef-name)] NOT_EQ reduce using rule 137 (class-name) NOT_EQ [reduce using rule 246 (enum-name)] NOT_EQ [reduce using rule 695 (template-name)] NOT_EQ [reduce using rule 730 (typedef-name)] XOR reduce using rule 137 (class-name) XOR [reduce using rule 246 (enum-name)] XOR [reduce using rule 695 (template-name)] XOR [reduce using rule 730 (typedef-name)] LESS reduce using rule 137 (class-name) LESS [reduce using rule 151 (concept-name)] LESS [reduce using rule 246 (enum-name)] LESS [reduce using rule 695 (template-name)] LESS [reduce using rule 730 (typedef-name)] GREATER reduce using rule 137 (class-name) GREATER [reduce using rule 246 (enum-name)] GREATER [reduce using rule 695 (template-name)] GREATER [reduce using rule 730 (typedef-name)] EXPLICIT reduce using rule 137 (class-name) EXPLICIT [reduce using rule 246 (enum-name)] EXPLICIT [reduce using rule 695 (template-name)] EXPLICIT [reduce using rule 730 (typedef-name)] MULT reduce using rule 137 (class-name) MULT [reduce using rule 246 (enum-name)] MULT [reduce using rule 695 (template-name)] MULT [reduce using rule 730 (typedef-name)] DIV reduce using rule 137 (class-name) DIV [reduce using rule 246 (enum-name)] DIV [reduce using rule 695 (template-name)] DIV [reduce using rule 730 (typedef-name)] MOD reduce using rule 137 (class-name) MOD [reduce using rule 246 (enum-name)] MOD [reduce using rule 695 (template-name)] MOD [reduce using rule 730 (typedef-name)] OR reduce using rule 137 (class-name) OR [reduce using rule 246 (enum-name)] OR [reduce using rule 695 (template-name)] OR [reduce using rule 730 (typedef-name)] LSHIFT reduce using rule 137 (class-name) LSHIFT [reduce using rule 246 (enum-name)] LSHIFT [reduce using rule 695 (template-name)] LSHIFT [reduce using rule 730 (typedef-name)] RSHIFT reduce using rule 137 (class-name) RSHIFT [reduce using rule 246 (enum-name)] RSHIFT [reduce using rule 695 (template-name)] RSHIFT [reduce using rule 730 (typedef-name)] LESS_EQ reduce using rule 137 (class-name) LESS_EQ [reduce using rule 246 (enum-name)] LESS_EQ [reduce using rule 695 (template-name)] LESS_EQ [reduce using rule 730 (typedef-name)] GREATER_EQ reduce using rule 137 (class-name) GREATER_EQ [reduce using rule 246 (enum-name)] GREATER_EQ [reduce using rule 695 (template-name)] GREATER_EQ [reduce using rule 730 (typedef-name)] DOT_STAR reduce using rule 137 (class-name) DOT_STAR [reduce using rule 246 (enum-name)] DOT_STAR [reduce using rule 695 (template-name)] DOT_STAR [reduce using rule 730 (typedef-name)] DEREF_STAR reduce using rule 137 (class-name) DEREF_STAR [reduce using rule 246 (enum-name)] DEREF_STAR [reduce using rule 695 (template-name)] DEREF_STAR [reduce using rule 730 (typedef-name)] TRY reduce using rule 137 (class-name) TRY [reduce using rule 246 (enum-name)] TRY [reduce using rule 695 (template-name)] TRY [reduce using rule 730 (typedef-name)] IMPORT reduce using rule 137 (class-name) IMPORT [reduce using rule 246 (enum-name)] IMPORT [reduce using rule 695 (template-name)] IMPORT [reduce using rule 730 (typedef-name)] NAMESPACE reduce using rule 137 (class-name) NAMESPACE [reduce using rule 246 (enum-name)] NAMESPACE [reduce using rule 695 (template-name)] NAMESPACE [reduce using rule 730 (typedef-name)] REQUIRES reduce using rule 137 (class-name) REQUIRES [reduce using rule 246 (enum-name)] REQUIRES [reduce using rule 695 (template-name)] REQUIRES [reduce using rule 730 (typedef-name)] COMPL reduce using rule 137 (class-name) COMPL [reduce using rule 246 (enum-name)] COMPL [reduce using rule 695 (template-name)] COMPL [reduce using rule 730 (typedef-name)] PLUS_PLUS reduce using rule 137 (class-name) PLUS_PLUS [reduce using rule 246 (enum-name)] PLUS_PLUS [reduce using rule 695 (template-name)] PLUS_PLUS [reduce using rule 730 (typedef-name)] MINUS_MINUS reduce using rule 137 (class-name) MINUS_MINUS [reduce using rule 246 (enum-name)] MINUS_MINUS [reduce using rule 695 (template-name)] MINUS_MINUS [reduce using rule 730 (typedef-name)] AUTO reduce using rule 137 (class-name) AUTO [reduce using rule 151 (concept-name)] AUTO [reduce using rule 246 (enum-name)] AUTO [reduce using rule 695 (template-name)] AUTO [reduce using rule 730 (typedef-name)] CHAR reduce using rule 137 (class-name) CHAR [reduce using rule 246 (enum-name)] CHAR [reduce using rule 695 (template-name)] CHAR [reduce using rule 730 (typedef-name)] CHAR8_T reduce using rule 137 (class-name) CHAR8_T [reduce using rule 246 (enum-name)] CHAR8_T [reduce using rule 695 (template-name)] CHAR8_T [reduce using rule 730 (typedef-name)] CHAR16_T reduce using rule 137 (class-name) CHAR16_T [reduce using rule 246 (enum-name)] CHAR16_T [reduce using rule 695 (template-name)] CHAR16_T [reduce using rule 730 (typedef-name)] CHAR32_T reduce using rule 137 (class-name) CHAR32_T [reduce using rule 246 (enum-name)] CHAR32_T [reduce using rule 695 (template-name)] CHAR32_T [reduce using rule 730 (typedef-name)] WCHAR_T reduce using rule 137 (class-name) WCHAR_T [reduce using rule 246 (enum-name)] WCHAR_T [reduce using rule 695 (template-name)] WCHAR_T [reduce using rule 730 (typedef-name)] BOOL reduce using rule 137 (class-name) BOOL [reduce using rule 246 (enum-name)] BOOL [reduce using rule 695 (template-name)] BOOL [reduce using rule 730 (typedef-name)] SHORT reduce using rule 137 (class-name) SHORT [reduce using rule 246 (enum-name)] SHORT [reduce using rule 695 (template-name)] SHORT [reduce using rule 730 (typedef-name)] INT reduce using rule 137 (class-name) INT [reduce using rule 246 (enum-name)] INT [reduce using rule 695 (template-name)] INT [reduce using rule 730 (typedef-name)] LONG reduce using rule 137 (class-name) LONG [reduce using rule 246 (enum-name)] LONG [reduce using rule 695 (template-name)] LONG [reduce using rule 730 (typedef-name)] SIGNED reduce using rule 137 (class-name) SIGNED [reduce using rule 246 (enum-name)] SIGNED [reduce using rule 695 (template-name)] SIGNED [reduce using rule 730 (typedef-name)] UNSIGNED reduce using rule 137 (class-name) UNSIGNED [reduce using rule 246 (enum-name)] UNSIGNED [reduce using rule 695 (template-name)] UNSIGNED [reduce using rule 730 (typedef-name)] FLOAT reduce using rule 137 (class-name) FLOAT [reduce using rule 246 (enum-name)] FLOAT [reduce using rule 695 (template-name)] FLOAT [reduce using rule 730 (typedef-name)] DOUBLE reduce using rule 137 (class-name) DOUBLE [reduce using rule 246 (enum-name)] DOUBLE [reduce using rule 695 (template-name)] DOUBLE [reduce using rule 730 (typedef-name)] VOID reduce using rule 137 (class-name) VOID [reduce using rule 246 (enum-name)] VOID [reduce using rule 695 (template-name)] VOID [reduce using rule 730 (typedef-name)] STATIC_ASSERT reduce using rule 137 (class-name) STATIC_ASSERT [reduce using rule 246 (enum-name)] STATIC_ASSERT [reduce using rule 695 (template-name)] STATIC_ASSERT [reduce using rule 730 (typedef-name)] STATIC reduce using rule 137 (class-name) STATIC [reduce using rule 246 (enum-name)] STATIC [reduce using rule 695 (template-name)] STATIC [reduce using rule 730 (typedef-name)] THREAD_LOCAL reduce using rule 137 (class-name) THREAD_LOCAL [reduce using rule 246 (enum-name)] THREAD_LOCAL [reduce using rule 695 (template-name)] THREAD_LOCAL [reduce using rule 730 (typedef-name)] MUTABLE reduce using rule 137 (class-name) MUTABLE [reduce using rule 246 (enum-name)] MUTABLE [reduce using rule 695 (template-name)] MUTABLE [reduce using rule 730 (typedef-name)] OVERRIDE reduce using rule 137 (class-name) OVERRIDE [reduce using rule 246 (enum-name)] OVERRIDE [reduce using rule 695 (template-name)] OVERRIDE [reduce using rule 730 (typedef-name)] $default reduce using rule 137 (class-name)
707 type-constraint → nested-name-specifier-opt concept-name • [COMMA, ELLIPSIS, IDENTIFIER, EQ, SEMICOLON, DECLTYPE, GREATER, AUTO] 708 | nested-name-specifier-opt concept-name • LESS template-argument-list-opt GREATER LESS shift, and go to state 401 $default reduce using rule 707 (type-constraint)
643 simple-template-id → template-name • LESS template-argument-list-opt GREATER 648 simple-type-specifier → nested-name-specifier-opt template-name • [COMMA, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, PLUS, MINUS, USING, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, ASM, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, OPEN_SQUARE, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, CLASS, STRUCT, UNION, FINAL, SPACESHIP, CONCEPT, QUERY, AND_AND, OR_OR, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, DOT, ENUM, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, EXPLICIT, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR, TRY, IMPORT, NAMESPACE, REQUIRES, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE, OVERRIDE] LESS shift, and go to state 207 LESS [reduce using rule 648 (simple-type-specifier)] $default reduce using rule 648 (simple-type-specifier)
644 simple-type-specifier → nested-name-specifier-opt type-name • $default reduce using rule 644 (simple-type-specifier)
150 concept-definition → CONCEPT • concept-name EQ constraint-expression SEMICOLON 151 concept-name → • IDENTIFIER IDENTIFIER shift, and go to state 402 concept-name go to state 403
690 template-declaration → template-head concept-definition • $default reduce using rule 690 (template-declaration)
689 template-declaration → template-head declaration • $default reduce using rule 689 (template-declaration)
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 158 constant-expression → • conditional-expression 169 conversion-function-id → • OPERATOR conversion-type-id 175 cv-qualifier → • CONST 176 | • VOLATILE 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 643 | template-name LESS • template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 682 template-argument → • constant-expression 683 | • type-id 684 | • id-expression 685 template-argument-list → • template-argument ELLIPSIS-opt 686 | • template-argument-list COMMA template-argument ELLIPSIS-opt 687 template-argument-list-opt → • %empty [GREATER] 688 | • template-argument-list 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 711 type-id → • type-specifier-seq abstract-declarator-opt 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 728 type-specifier-seq → • type-specifier attribute-specifier-seq-opt 729 | • type-specifier type-specifier-seq 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 OPERATOR shift, and go to state 248 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 124 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] GREATER reduce using rule 687 (template-argument-list-opt) AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-key go to state 404 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 307 constant-expression go to state 405 conversion-function-id go to state 272 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 273 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 406 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 309 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 407 template-argument go to state 408 template-argument-list go to state 409 template-argument-list-opt go to state 410 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 411 type-name go to state 106 type-specifier go to state 412 type-specifier-seq go to state 413 typedef-name go to state 108 typename-specifier go to state 414 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
0 $accept → translation-unit $end • $default accept
555 placeholder-type-specifier → type-constraint-opt DECLTYPE • OPEN_PAREN AUTO CLOSE_PAREN OPEN_PAREN shift, and go to state 415
554 placeholder-type-specifier → type-constraint-opt AUTO • $default reduce using rule 554 (placeholder-type-specifier)
453 nested-name-specifier → type-name SCOPE • $default reduce using rule 453 (nested-name-specifier)
271 export-declaration → EXPORT OPEN_BRACE declaration-seq-opt • CLOSE_BRACE CLOSE_BRACE shift, and go to state 416
9 EXTERN-opt → • %empty [TEMPLATE] 10 | • EXTERN 13 INLINE-opt → • %empty [NAMESPACE] 14 | • INLINE 44 alias-declaration → • USING IDENTIFIER attribute-specifier-seq-opt EQ defining-type-id SEMICOLON 49 asm-declaration → • attribute-specifier-seq-opt ASM OPEN_PAREN string-literal CLOSE_PAREN SEMICOLON 71 attribute-declaration → • attribute-specifier-seq SEMICOLON 82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, ELLIPSIS, EXTERN, IDENTIFIER, INLINE, SCOPE, TYPENAME, VIRTUAL, USING, ALIGNAS, OPEN_PAREN, AND, ASM, OPEN_SQUARE, CLASS, STRUCT, UNION, AND_AND, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, MULT, COMPL, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 84 | • attribute-specifier-seq 107 block-declaration → • simple-declaration 108 | • asm-declaration 109 | • namespace-alias-definition 110 | • using-declaration 111 | • using-enum-declaration 112 | • using-directive 113 | • static_assert-declaration 114 | • alias-declaration 115 | • opaque-enum-declaration 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 193 declaration → • block-declaration 194 | • nodeclspec-function-declaration 195 | • function-definition 196 | • template-declaration 197 | • deduction-guide 198 | • explicit-instantiation 199 | • explicit-specialization 200 | • export-declaration 201 | • linkage-specification 202 | • namespace-definition 203 | • empty-declaration 204 | • attribute-declaration 205 | • module-import-declaration 206 declaration-seq → • declaration 207 | • declaration-seq declaration 208 declaration-seq-opt → • %empty [CLOSE_BRACE] 209 | • declaration-seq 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 215 deduction-guide → • explicit-specifier-opt template-name OPEN_PAREN parameter-declaration-clause CLOSE_PAREN DEREF simple-template-id SEMICOLON 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 233 empty-declaration → • SEMICOLON 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 264 explicit-instantiation → • EXTERN-opt TEMPLATE declaration 265 explicit-specialization → • TEMPLATE LESS GREATER declaration 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 268 explicit-specifier-opt → • %empty [IDENTIFIER] 269 | • explicit-specifier 270 export-declaration → • EXPORT declaration 271 | • EXPORT OPEN_BRACE declaration-seq-opt CLOSE_BRACE 272 | • EXPORT module-import-declaration 327 function-definition → • attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | • attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 390 linkage-specification → • EXTERN string-literal OPEN_BRACE declaration-seq-opt CLOSE_BRACE 390 | EXTERN string-literal OPEN_BRACE • declaration-seq-opt CLOSE_BRACE 391 | • EXTERN string-literal declaration 428 module-import-declaration → • IMPORT module-name attribute-specifier-seq-opt SEMICOLON 429 | • IMPORT module-partition attribute-specifier-seq-opt SEMICOLON 430 | • IMPORT header-name attribute-specifier-seq-opt SEMICOLON 443 named-namespace-definition → • INLINE-opt NAMESPACE attribute-specifier-seq-opt IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE 444 namespace-alias → • IDENTIFIER 445 namespace-alias-definition → • NAMESPACE IDENTIFIER EQ qualified-namespace-specifier SEMICOLON 447 namespace-definition → • named-namespace-definition 448 | • unnamed-namespace-definition 449 | • nested-namespace-definition 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 460 nested-namespace-definition → • NAMESPACE enclosing-namespace-specifier SCOPE INLINE-opt IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE 476 nodeclspec-function-declaration → • attribute-specifier-seq-opt declarator SEMICOLON 496 opaque-enum-declaration → • enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt SEMICOLON 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 639 simple-declaration → • decl-specifier-seq init-declarator-list-opt SEMICOLON 640 | • attribute-specifier-seq decl-specifier-seq init-declarator-list SEMICOLON 641 | • attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE initializer SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 675 static_assert-declaration → • STATIC_ASSERT OPEN_PAREN constant-expression CLOSE_PAREN SEMICOLON 676 | • STATIC_ASSERT OPEN_PAREN constant-expression COMMA string-literal CLOSE_PAREN SEMICOLON 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 689 template-declaration → • template-head declaration 690 | • template-head concept-definition 691 template-head → • TEMPLATE LESS template-parameter-list GREATER requires-clause-opt 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 753 unnamed-namespace-definition → • INLINE-opt NAMESPACE attribute-specifier-seq-opt OPEN_BRACE namespace-body CLOSE_BRACE 762 using-declaration → • USING using-declarator-list SEMICOLON 766 using-directive → • attribute-specifier-seq-opt USING NAMESPACE nested-name-specifier-opt namespace-name SEMICOLON 767 using-enum-declaration → • USING elaborated-enum-specifier SEMICOLON CONSTEXPR shift, and go to state 1 EXPORT shift, and go to state 2 EXTERN shift, and go to state 3 IDENTIFIER shift, and go to state 4 INLINE shift, and go to state 5 SCOPE shift, and go to state 6 TEMPLATE shift, and go to state 7 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 USING shift, and go to state 10 SEMICOLON shift, and go to state 11 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 IMPORT shift, and go to state 25 NAMESPACE shift, and go to state 26 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC_ASSERT shift, and go to state 41 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 CONSTEXPR [reduce using rule 83 (attribute-specifier-seq-opt)] EXTERN [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] INLINE [reduce using rule 83 (attribute-specifier-seq-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] TEMPLATE [reduce using rule 9 (EXTERN-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] VIRTUAL [reduce using rule 83 (attribute-specifier-seq-opt)] USING [reduce using rule 83 (attribute-specifier-seq-opt)] CLOSE_BRACE reduce using rule 208 (declaration-seq-opt) CLASS [reduce using rule 83 (attribute-specifier-seq-opt)] STRUCT [reduce using rule 83 (attribute-specifier-seq-opt)] UNION [reduce using rule 83 (attribute-specifier-seq-opt)] CONST [reduce using rule 83 (attribute-specifier-seq-opt)] VOLATILE [reduce using rule 83 (attribute-specifier-seq-opt)] FRIEND [reduce using rule 83 (attribute-specifier-seq-opt)] TYPEDEF [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTEVAL [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTINIT [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] ENUM [reduce using rule 83 (attribute-specifier-seq-opt)] EXPLICIT [reduce using rule 83 (attribute-specifier-seq-opt)] NAMESPACE [reduce using rule 13 (INLINE-opt)] AUTO reduce using rule 83 (attribute-specifier-seq-opt) AUTO [reduce using rule 709 (type-constraint-opt)] CHAR [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR8_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR16_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR32_T [reduce using rule 83 (attribute-specifier-seq-opt)] WCHAR_T [reduce using rule 83 (attribute-specifier-seq-opt)] BOOL [reduce using rule 83 (attribute-specifier-seq-opt)] SHORT [reduce using rule 83 (attribute-specifier-seq-opt)] INT [reduce using rule 83 (attribute-specifier-seq-opt)] LONG [reduce using rule 83 (attribute-specifier-seq-opt)] SIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] UNSIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] FLOAT [reduce using rule 83 (attribute-specifier-seq-opt)] DOUBLE [reduce using rule 83 (attribute-specifier-seq-opt)] VOID [reduce using rule 83 (attribute-specifier-seq-opt)] STATIC [reduce using rule 83 (attribute-specifier-seq-opt)] THREAD_LOCAL [reduce using rule 83 (attribute-specifier-seq-opt)] MUTABLE [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 60 declaration-seq go to state 61 declaration-seq-opt go to state 417 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113
391 linkage-specification → EXTERN string-literal declaration • $default reduce using rule 391 (linkage-specification)
691 template-head → TEMPLATE • LESS template-parameter-list GREATER requires-clause-opt LESS shift, and go to state 418
722 type-parameter-key → TYPENAME • $default reduce using rule 722 (type-parameter-key)
721 type-parameter-key → CLASS • $default reduce using rule 721 (type-parameter-key)
9 EXTERN-opt → • %empty [TEMPLATE] 10 | • EXTERN 13 INLINE-opt → • %empty [NAMESPACE] 14 | • INLINE 44 alias-declaration → • USING IDENTIFIER attribute-specifier-seq-opt EQ defining-type-id SEMICOLON 49 asm-declaration → • attribute-specifier-seq-opt ASM OPEN_PAREN string-literal CLOSE_PAREN SEMICOLON 71 attribute-declaration → • attribute-specifier-seq SEMICOLON 82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, ELLIPSIS, EXTERN, IDENTIFIER, INLINE, SCOPE, TYPENAME, VIRTUAL, USING, ALIGNAS, OPEN_PAREN, AND, ASM, OPEN_SQUARE, CLASS, STRUCT, UNION, AND_AND, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, MULT, COMPL, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 84 | • attribute-specifier-seq 107 block-declaration → • simple-declaration 108 | • asm-declaration 109 | • namespace-alias-definition 110 | • using-declaration 111 | • using-enum-declaration 112 | • using-directive 113 | • static_assert-declaration 114 | • alias-declaration 115 | • opaque-enum-declaration 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 193 declaration → • block-declaration 194 | • nodeclspec-function-declaration 195 | • function-definition 196 | • template-declaration 197 | • deduction-guide 198 | • explicit-instantiation 199 | • explicit-specialization 200 | • export-declaration 201 | • linkage-specification 202 | • namespace-definition 203 | • empty-declaration 204 | • attribute-declaration 205 | • module-import-declaration 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 215 deduction-guide → • explicit-specifier-opt template-name OPEN_PAREN parameter-declaration-clause CLOSE_PAREN DEREF simple-template-id SEMICOLON 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 233 empty-declaration → • SEMICOLON 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 264 explicit-instantiation → • EXTERN-opt TEMPLATE declaration 265 explicit-specialization → • TEMPLATE LESS GREATER declaration 265 | TEMPLATE LESS GREATER • declaration 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 268 explicit-specifier-opt → • %empty [IDENTIFIER] 269 | • explicit-specifier 270 export-declaration → • EXPORT declaration 271 | • EXPORT OPEN_BRACE declaration-seq-opt CLOSE_BRACE 272 | • EXPORT module-import-declaration 327 function-definition → • attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | • attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 390 linkage-specification → • EXTERN string-literal OPEN_BRACE declaration-seq-opt CLOSE_BRACE 391 | • EXTERN string-literal declaration 428 module-import-declaration → • IMPORT module-name attribute-specifier-seq-opt SEMICOLON 429 | • IMPORT module-partition attribute-specifier-seq-opt SEMICOLON 430 | • IMPORT header-name attribute-specifier-seq-opt SEMICOLON 443 named-namespace-definition → • INLINE-opt NAMESPACE attribute-specifier-seq-opt IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE 444 namespace-alias → • IDENTIFIER 445 namespace-alias-definition → • NAMESPACE IDENTIFIER EQ qualified-namespace-specifier SEMICOLON 447 namespace-definition → • named-namespace-definition 448 | • unnamed-namespace-definition 449 | • nested-namespace-definition 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 460 nested-namespace-definition → • NAMESPACE enclosing-namespace-specifier SCOPE INLINE-opt IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE 476 nodeclspec-function-declaration → • attribute-specifier-seq-opt declarator SEMICOLON 496 opaque-enum-declaration → • enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt SEMICOLON 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 639 simple-declaration → • decl-specifier-seq init-declarator-list-opt SEMICOLON 640 | • attribute-specifier-seq decl-specifier-seq init-declarator-list SEMICOLON 641 | • attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE initializer SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 675 static_assert-declaration → • STATIC_ASSERT OPEN_PAREN constant-expression CLOSE_PAREN SEMICOLON 676 | • STATIC_ASSERT OPEN_PAREN constant-expression COMMA string-literal CLOSE_PAREN SEMICOLON 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 689 template-declaration → • template-head declaration 690 | • template-head concept-definition 691 template-head → • TEMPLATE LESS template-parameter-list GREATER requires-clause-opt 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 753 unnamed-namespace-definition → • INLINE-opt NAMESPACE attribute-specifier-seq-opt OPEN_BRACE namespace-body CLOSE_BRACE 762 using-declaration → • USING using-declarator-list SEMICOLON 766 using-directive → • attribute-specifier-seq-opt USING NAMESPACE nested-name-specifier-opt namespace-name SEMICOLON 767 using-enum-declaration → • USING elaborated-enum-specifier SEMICOLON CONSTEXPR shift, and go to state 1 EXPORT shift, and go to state 2 EXTERN shift, and go to state 3 IDENTIFIER shift, and go to state 4 INLINE shift, and go to state 5 SCOPE shift, and go to state 6 TEMPLATE shift, and go to state 7 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 USING shift, and go to state 10 SEMICOLON shift, and go to state 11 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 IMPORT shift, and go to state 25 NAMESPACE shift, and go to state 26 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC_ASSERT shift, and go to state 41 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 CONSTEXPR [reduce using rule 83 (attribute-specifier-seq-opt)] EXTERN [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] INLINE [reduce using rule 83 (attribute-specifier-seq-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] TEMPLATE [reduce using rule 9 (EXTERN-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] VIRTUAL [reduce using rule 83 (attribute-specifier-seq-opt)] USING [reduce using rule 83 (attribute-specifier-seq-opt)] CLASS [reduce using rule 83 (attribute-specifier-seq-opt)] STRUCT [reduce using rule 83 (attribute-specifier-seq-opt)] UNION [reduce using rule 83 (attribute-specifier-seq-opt)] CONST [reduce using rule 83 (attribute-specifier-seq-opt)] VOLATILE [reduce using rule 83 (attribute-specifier-seq-opt)] FRIEND [reduce using rule 83 (attribute-specifier-seq-opt)] TYPEDEF [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTEVAL [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTINIT [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] ENUM [reduce using rule 83 (attribute-specifier-seq-opt)] EXPLICIT [reduce using rule 83 (attribute-specifier-seq-opt)] NAMESPACE [reduce using rule 13 (INLINE-opt)] AUTO reduce using rule 83 (attribute-specifier-seq-opt) AUTO [reduce using rule 709 (type-constraint-opt)] CHAR [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR8_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR16_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR32_T [reduce using rule 83 (attribute-specifier-seq-opt)] WCHAR_T [reduce using rule 83 (attribute-specifier-seq-opt)] BOOL [reduce using rule 83 (attribute-specifier-seq-opt)] SHORT [reduce using rule 83 (attribute-specifier-seq-opt)] INT [reduce using rule 83 (attribute-specifier-seq-opt)] LONG [reduce using rule 83 (attribute-specifier-seq-opt)] SIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] UNSIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] FLOAT [reduce using rule 83 (attribute-specifier-seq-opt)] DOUBLE [reduce using rule 83 (attribute-specifier-seq-opt)] VOID [reduce using rule 83 (attribute-specifier-seq-opt)] STATIC [reduce using rule 83 (attribute-specifier-seq-opt)] THREAD_LOCAL [reduce using rule 83 (attribute-specifier-seq-opt)] MUTABLE [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 419 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113
23 THIS-opt → • %empty [CONSTEXPR, EXTERN, IDENTIFIER, INLINE, SCOPE, TYPENAME, VIRTUAL, CLASS, STRUCT, UNION, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 24 | • THIS 45 alignment-specifier → • ALIGNAS OPEN_PAREN type-id ELLIPSIS-opt CLOSE_PAREN 46 | • ALIGNAS OPEN_PAREN constant-expression ELLIPSIS-opt CLOSE_PAREN 80 attribute-specifier → • OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE 81 | • alignment-specifier 82 attribute-specifier-seq → attribute-specifier-seq-opt • attribute-specifier 543 parameter-declaration → attribute-specifier-seq-opt • THIS-opt decl-specifier-seq declarator 544 | attribute-specifier-seq-opt • THIS-opt decl-specifier-seq declarator EQ initializer-clause 545 | attribute-specifier-seq-opt • THIS-opt decl-specifier-seq abstract-declarator-opt 546 | attribute-specifier-seq-opt • THIS-opt decl-specifier-seq abstract-declarator-opt EQ initializer-clause THIS shift, and go to state 420 ALIGNAS shift, and go to state 157 OPEN_SQUARE shift, and go to state 161 $default reduce using rule 23 (THIS-opt) THIS-opt go to state 421 alignment-specifier go to state 165 attribute-specifier go to state 166
151 concept-name → • IDENTIFIER 707 type-constraint → nested-name-specifier-opt • concept-name 708 | nested-name-specifier-opt • concept-name LESS template-argument-list-opt GREATER IDENTIFIER shift, and go to state 402 concept-name go to state 201
697 template-parameter → parameter-declaration • $default reduce using rule 697 (template-parameter)
719 type-parameter → template-head • type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 720 | template-head • type-parameter-key IDENTIFIER-opt EQ id-expression 721 type-parameter-key → • CLASS 722 | • TYPENAME TYPENAME shift, and go to state 216 CLASS shift, and go to state 217 type-parameter-key go to state 422
698 template-parameter-list → template-parameter • $default reduce using rule 698 (template-parameter-list)
691 template-head → TEMPLATE LESS template-parameter-list • GREATER requires-clause-opt 699 template-parameter-list → template-parameter-list • COMMA template-parameter COMMA shift, and go to state 423 GREATER shift, and go to state 424
5 ELLIPSIS-opt → • %empty [COMMA, IDENTIFIER, GREATER] 6 | • ELLIPSIS 11 IDENTIFIER-opt → • %empty [EQ] 12 | • IDENTIFIER 717 type-parameter → type-constraint • ELLIPSIS-opt IDENTIFIER-opt 718 | type-constraint • IDENTIFIER-opt EQ type-id ELLIPSIS shift, and go to state 155 IDENTIFIER shift, and go to state 425 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] EQ reduce using rule 11 (IDENTIFIER-opt) $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 426 IDENTIFIER-opt go to state 427
696 template-parameter → type-parameter • $default reduce using rule 696 (template-parameter)
5 ELLIPSIS-opt → • %empty [COMMA, IDENTIFIER, GREATER] 6 | • ELLIPSIS 11 IDENTIFIER-opt → • %empty [EQ] 12 | • IDENTIFIER 715 type-parameter → type-parameter-key • ELLIPSIS-opt IDENTIFIER-opt 716 | type-parameter-key • IDENTIFIER-opt EQ type-id ELLIPSIS shift, and go to state 155 IDENTIFIER shift, and go to state 425 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] EQ reduce using rule 11 (IDENTIFIER-opt) $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 428 IDENTIFIER-opt go to state 429
456 nested-name-specifier → nested-name-specifier IDENTIFIER • SCOPE 732 typename-specifier → TYPENAME nested-name-specifier IDENTIFIER • [COMMA, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, PLUS, MINUS, USING, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, ASM, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, OPEN_SQUARE, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, CLASS, STRUCT, UNION, FINAL, SPACESHIP, CONCEPT, QUERY, AND_AND, OR_OR, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, DOT, ENUM, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, EXPLICIT, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR, TRY, IMPORT, NAMESPACE, REQUIRES, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE, OVERRIDE] SCOPE shift, and go to state 398 SCOPE [reduce using rule 732 (typename-specifier)] $default reduce using rule 732 (typename-specifier)
22 TEMPLATE-opt → TEMPLATE • $default reduce using rule 22 (TEMPLATE-opt)
457 nested-name-specifier → nested-name-specifier TEMPLATE-opt • simple-template-id SCOPE 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 733 typename-specifier → TYPENAME nested-name-specifier TEMPLATE-opt • simple-template-id IDENTIFIER shift, and go to state 191 simple-template-id go to state 430 template-name go to state 102
44 alias-declaration → USING IDENTIFIER attribute-specifier-seq-opt • EQ defining-type-id SEMICOLON 45 alignment-specifier → • ALIGNAS OPEN_PAREN type-id ELLIPSIS-opt CLOSE_PAREN 46 | • ALIGNAS OPEN_PAREN constant-expression ELLIPSIS-opt CLOSE_PAREN 80 attribute-specifier → • OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE 81 | • alignment-specifier 82 attribute-specifier-seq → attribute-specifier-seq-opt • attribute-specifier EQ shift, and go to state 431 ALIGNAS shift, and go to state 157 OPEN_SQUARE shift, and go to state 161 alignment-specifier go to state 165 attribute-specifier go to state 166
21 TEMPLATE-opt → • %empty [IDENTIFIER] 22 | • TEMPLATE 169 conversion-function-id → • OPERATOR conversion-type-id 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 456 nested-name-specifier → nested-name-specifier • IDENTIFIER SCOPE 457 | nested-name-specifier • TEMPLATE-opt simple-template-id SCOPE 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 763 using-declarator → TYPENAME-opt nested-name-specifier • unqualified-id IDENTIFIER shift, and go to state 432 TEMPLATE shift, and go to state 229 OPERATOR shift, and go to state 248 COMPL shift, and go to state 334 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] TEMPLATE-opt go to state 199 conversion-function-id go to state 272 literal-operator-id go to state 282 operator-function-id go to state 289 simple-template-id go to state 433 template-id go to state 299 template-name go to state 102 unqualified-id go to state 434
767 using-enum-declaration → USING elaborated-enum-specifier SEMICOLON • $default reduce using rule 767 (using-enum-declaration)
764 using-declarator-list → using-declarator ELLIPSIS-opt • $default reduce using rule 764 (using-declarator-list)
25 TYPENAME-opt → • %empty [IDENTIFIER, SCOPE, DECLTYPE] 26 | • TYPENAME 763 using-declarator → • TYPENAME-opt nested-name-specifier unqualified-id 765 using-declarator-list → using-declarator-list COMMA • using-declarator ELLIPSIS-opt TYPENAME shift, and go to state 123 $default reduce using rule 25 (TYPENAME-opt) TYPENAME-opt go to state 125 using-declarator go to state 435
762 using-declaration → USING using-declarator-list SEMICOLON • $default reduce using rule 762 (using-declaration)
137 class-name → IDENTIFIER • [SCOPE] 246 enum-name → IDENTIFIER • [SCOPE] 444 namespace-alias → IDENTIFIER • [SCOPE] 450 namespace-name → IDENTIFIER • [SCOPE] 695 template-name → IDENTIFIER • [LESS] 730 typedef-name → IDENTIFIER • [SCOPE] 754 unqualified-id → IDENTIFIER • [COMMA, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, PLUS, MINUS, USING, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, ASM, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, OPEN_SQUARE, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, CLASS, STRUCT, UNION, FINAL, SPACESHIP, CONCEPT, QUERY, AND_AND, OR_OR, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, DOT, ENUM, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, EXPLICIT, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR, TRY, IMPORT, NAMESPACE, REQUIRES, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE, OVERRIDE] SCOPE reduce using rule 137 (class-name) SCOPE [reduce using rule 246 (enum-name)] SCOPE [reduce using rule 444 (namespace-alias)] SCOPE [reduce using rule 450 (namespace-name)] SCOPE [reduce using rule 730 (typedef-name)] SCOPE [reduce using rule 754 (unqualified-id)] LESS reduce using rule 695 (template-name) LESS [reduce using rule 754 (unqualified-id)] $default reduce using rule 754 (unqualified-id)
477 noexcept-expression → NOEXCEPT • OPEN_PAREN expression CLOSE_PAREN OPEN_PAREN shift, and go to state 436
751 unary-operator → NOT • $default reduce using rule 751 (unary-operator)
20 SCOPE-opt → SCOPE • [DELETE, NEW] 452 nested-name-specifier → SCOPE • [IDENTIFIER, TEMPLATE, OPERATOR, COMPL] DELETE reduce using rule 20 (SCOPE-opt) NEW reduce using rule 20 (SCOPE-opt) $default reduce using rule 452 (nested-name-specifier)
577 primary-expression → THIS • $default reduce using rule 577 (primary-expression)
749 unary-operator → PLUS • $default reduce using rule 749 (unary-operator)
750 unary-operator → MINUS • $default reduce using rule 750 (unary-operator)
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 130 | OPEN_PAREN • type-id CLOSE_PAREN cast-expression 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 175 cv-qualifier → • CONST 176 | • VOLATILE 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 277 expression → • assignment-expression 278 | • expression COMMA assignment-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 285 | OPEN_PAREN • cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 286 | OPEN_PAREN • ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | OPEN_PAREN • cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 578 | OPEN_PAREN • expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 711 type-id → • type-specifier-seq abstract-declarator-opt 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 728 type-specifier-seq → • type-specifier attribute-specifier-seq-opt 729 | • type-specifier type-specifier-seq 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list ELLIPSIS shift, and go to state 437 IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 OPERATOR shift, and go to state 248 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 124 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 await-expression go to state 268 cast-expression go to state 438 class-key go to state 404 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 273 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 439 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 407 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 440 type-name go to state 106 type-specifier go to state 412 type-specifier-seq go to state 413 typedef-name go to state 108 typename-specifier go to state 414 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
748 unary-operator → AND • $default reduce using rule 748 (unary-operator)
5 ELLIPSIS-opt → • %empty [IDENTIFIER] 6 | • ELLIPSIS 123 capture → • simple-capture 124 | • init-capture 125 capture-default → • AND 126 | • EQ 127 capture-list → • capture 128 | • capture-list COMMA capture 346 init-capture → • ELLIPSIS-opt IDENTIFIER initializer 347 | • AND ELLIPSIS-opt IDENTIFIER initializer 379 lambda-capture → • capture-default 380 | • capture-list 381 | • capture-default COMMA capture-list 382 lambda-capture-opt → • %empty [CLOSE_SQUARE] 383 | • lambda-capture 388 lambda-introducer → OPEN_SQUARE • lambda-capture-opt CLOSE_SQUARE 635 simple-capture → • IDENTIFIER ELLIPSIS-opt 636 | • AND IDENTIFIER ELLIPSIS-opt 637 | • THIS 638 | • MULT THIS ELLIPSIS shift, and go to state 155 IDENTIFIER shift, and go to state 441 THIS shift, and go to state 442 EQ shift, and go to state 443 AND shift, and go to state 444 MULT shift, and go to state 445 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 382 (lambda-capture-opt) ELLIPSIS-opt go to state 446 capture go to state 447 capture-default go to state 448 capture-list go to state 449 init-capture go to state 450 lambda-capture go to state 451 lambda-capture-opt go to state 452 simple-capture go to state 453
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 90 await-expression → • CO_AWAIT cast-expression 90 | CO_AWAIT • cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 await-expression go to state 268 cast-expression go to state 454 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 169 conversion-function-id → OPERATOR • conversion-type-id 170 conversion-type-id → • type-specifier-seq conversion-declarator-opt 175 cv-qualifier → • CONST 176 | • VOLATILE 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 246 enum-name → • IDENTIFIER 392 literal-operator-id → OPERATOR • string-literal IDENTIFIER 393 | OPERATOR • user-defined-string-literal 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 497 operator-function-id → OPERATOR • overloadable-operator 498 | OPERATOR • overloadable-operator LESS template-argument-list-opt GREATER 499 overloadable-operator → • NEW 500 | • DELETE 501 | • NEW OPEN_SQUARE CLOSE_SQUARE 502 | • DELETE OPEN_SQUARE CLOSE_SQUARE 503 | • CO_AWAIT 504 | • OPEN_PAREN CLOSE_PAREN 505 | • OPEN_SQUARE CLOSE_SQUARE 506 | • DEREF 507 | • DEREF_STAR 508 | • COMPL 509 | • NOT 510 | • PLUS 511 | • MINUS 512 | • MULT 513 | • DIV 514 | • MOD 515 | • XOR 516 | • AND 517 | • OR 518 | • EQ 519 | • PLUS_EQ 520 | • MINUS_EQ 521 | • MULT_EQ 522 | • DIV_EQ 523 | • MOD_EQ 524 | • XOR_EQ 525 | • AND_EQ 526 | • OR_EQ 527 | • EQ_EQ 528 | • NOT_EQ 529 | • LESS 530 | • GREATER 531 | • LESS_EQ 532 | • GREATER_EQ 533 | • SPACESHIP 534 | • AND_AND 535 | • OR_OR 536 | • LSHIFT 537 | • RSHIFT 538 | • LSHIFT_EQ 539 | • RSHIFT_EQ 540 | • PLUS_PLUS 541 | • MINUS_MINUS 542 | • COMMA 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 681 string-literal → • STRING_LITERAL 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 728 type-specifier-seq → • type-specifier attribute-specifier-seq-opt 729 | • type-specifier type-specifier-seq 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 761 user-defined-string-literal → • string-literal ud-suffix COMMA shift, and go to state 455 IDENTIFIER shift, and go to state 4 NOT shift, and go to state 456 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 PLUS shift, and go to state 457 MINUS shift, and go to state 458 EQ shift, and go to state 459 OPEN_PAREN shift, and go to state 460 AND shift, and go to state 461 MULT_EQ shift, and go to state 462 DIV_EQ shift, and go to state 463 MOD_EQ shift, and go to state 464 PLUS_EQ shift, and go to state 465 MINUS_EQ shift, and go to state 466 RSHIFT_EQ shift, and go to state 467 LSHIFT_EQ shift, and go to state 468 AND_EQ shift, and go to state 469 XOR_EQ shift, and go to state 470 OR_EQ shift, and go to state 471 OPEN_SQUARE shift, and go to state 472 CO_AWAIT shift, and go to state 473 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 SPACESHIP shift, and go to state 474 AND_AND shift, and go to state 475 OR_OR shift, and go to state 476 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 DECLTYPE shift, and go to state 21 DEREF shift, and go to state 477 DELETE shift, and go to state 478 ENUM shift, and go to state 124 EQ_EQ shift, and go to state 479 NOT_EQ shift, and go to state 480 XOR shift, and go to state 481 LESS shift, and go to state 482 GREATER shift, and go to state 483 MULT shift, and go to state 484 DIV shift, and go to state 485 MOD shift, and go to state 486 OR shift, and go to state 487 LSHIFT shift, and go to state 488 RSHIFT shift, and go to state 489 LESS_EQ shift, and go to state 490 GREATER_EQ shift, and go to state 491 DEREF_STAR shift, and go to state 492 NEW shift, and go to state 493 COMPL shift, and go to state 494 PLUS_PLUS shift, and go to state 495 MINUS_MINUS shift, and go to state 496 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STRING_LITERAL shift, and go to state 117 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] $default reduce using rule 709 (type-constraint-opt) class-key go to state 404 class-name go to state 55 conversion-type-id go to state 497 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 overloadable-operator go to state 498 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 string-literal go to state 499 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 412 type-specifier-seq go to state 500 typedef-name go to state 108 typename-specifier go to state 109 user-defined-string-literal go to state 501
747 unary-operator → MULT • $default reduce using rule 747 (unary-operator)
615 requirement-parameter-list → • OPEN_PAREN parameter-declaration-clause CLOSE_PAREN 616 requirement-parameter-list-opt → • %empty [OPEN_BRACE] 617 | • requirement-parameter-list 623 requires-expression → REQUIRES • requirement-parameter-list-opt requirement-body OPEN_PAREN shift, and go to state 502 $default reduce using rule 616 (requirement-parameter-list-opt) requirement-parameter-list go to state 503 requirement-parameter-list-opt go to state 504
137 class-name → • IDENTIFIER 138 | • simple-template-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 752 unary-operator → COMPL • [IDENTIFIER, NOEXCEPT, NOT, SCOPE, THIS, TYPENAME, PLUS, MINUS, OPEN_PAREN, AND, OPEN_SQUARE, CO_AWAIT, OPERATOR, DECLTYPE, DELETE, MULT, REQUIRES, NEW, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, DYNAMIC_CAST, STATIC_CAST, REINTERPRET_CAST, CONST_CAST, TYPEID, LITERAL, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, SIZEOF, ALIGNOF] 758 unqualified-id → COMPL • type-name 759 | COMPL • decltype-specifier IDENTIFIER shift, and go to state 505 DECLTYPE shift, and go to state 21 IDENTIFIER [reduce using rule 752 (unary-operator)] DECLTYPE [reduce using rule 752 (unary-operator)] $default reduce using rule 752 (unary-operator) class-name go to state 55 decltype-specifier go to state 506 enum-name go to state 71 simple-template-id go to state 96 template-name go to state 102 type-name go to state 507 typedef-name go to state 108
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 737 | PLUS_PLUS • cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 await-expression go to state 268 cast-expression go to state 508 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 738 | MINUS_MINUS • cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 await-expression go to state 268 cast-expression go to state 509 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
570 postfix-expression → DYNAMIC_CAST • LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN LESS shift, and go to state 510
571 postfix-expression → STATIC_CAST • LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN LESS shift, and go to state 511
572 postfix-expression → REINTERPRET_CAST • LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN LESS shift, and go to state 512
573 postfix-expression → CONST_CAST • LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN LESS shift, and go to state 513
574 postfix-expression → TYPEID • OPEN_PAREN expression CLOSE_PAREN 575 | TYPEID • OPEN_PAREN type-id CLOSE_PAREN OPEN_PAREN shift, and go to state 514
576 primary-expression → LITERAL • $default reduce using rule 576 (primary-expression)
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 54 assignment-expression-opt → • %empty [COMMA, ELLIPSIS, EQ, SEMICOLON, CLOSE_PAREN, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, GREATER] 55 | • assignment-expression 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 700 | THROW • assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] DELETE reduce using rule 19 (SCOPE-opt) NEW reduce using rule 19 (SCOPE-opt) AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 54 (assignment-expression-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 515 assignment-expression-opt go to state 516 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 90 await-expression → • CO_AWAIT cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 740 | SIZEOF • unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 741 | SIZEOF • OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 742 | SIZEOF • ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id ELLIPSIS shift, and go to state 517 IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 518 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 await-expression go to state 268 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 519 unary-operator go to state 303 unqualified-id go to state 304
743 unary-expression → ALIGNOF • OPEN_PAREN type-id CLOSE_PAREN OPEN_PAREN shift, and go to state 520
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 90 await-expression → • CO_AWAIT cast-expression 120 braced-init-list → • OPEN_BRACE initializer-list COMMA-opt CLOSE_BRACE 121 | • OPEN_BRACE designated-initializer-list COMMA-opt CLOSE_BRACE 122 | • OPEN_BRACE CLOSE_BRACE 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 774 | CO_YIELD • assignment-expression 775 | • CO_YIELD braced-init-list 775 | CO_YIELD • braced-init-list IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPEN_BRACE shift, and go to state 378 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 521 await-expression go to state 268 braced-init-list go to state 522 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
222 delete-expression → SCOPE-opt • DELETE cast-expression 223 | SCOPE-opt • DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 466 new-expression → SCOPE-opt • NEW new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt • NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt DELETE shift, and go to state 523 NEW shift, and go to state 524
42 additive-expression → additive-expression • PLUS multiplicative-expression 43 | additive-expression • MINUS multiplicative-expression 632 shift-expression → additive-expression • [COMMA, ELLIPSIS, EQ, SEMICOLON, CLOSE_PAREN, AND, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, SPACESHIP, QUERY, AND_AND, OR_OR, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ] PLUS shift, and go to state 525 MINUS shift, and go to state 526 $default reduce using rule 632 (shift-expression)
48 and-expression → and-expression • AND equality-expression 262 exclusive-or-expression → and-expression • [COMMA, ELLIPSIS, EQ, SEMICOLON, CLOSE_PAREN, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, QUERY, AND_AND, OR_OR, XOR, GREATER, OR] AND shift, and go to state 527 $default reduce using rule 262 (exclusive-or-expression)
277 expression → assignment-expression • $default reduce using rule 277 (expression)
739 unary-expression → await-expression • $default reduce using rule 739 (unary-expression)
556 pm-expression → cast-expression • $default reduce using rule 556 (pm-expression)
147 compare-expression → compare-expression • SPACESHIP shift-expression 605 relational-expression → compare-expression • [COMMA, ELLIPSIS, EQ, SEMICOLON, CLOSE_PAREN, AND, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, QUERY, AND_AND, OR_OR, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, OR, LESS_EQ, GREATER_EQ] SPACESHIP shift, and go to state 528 $default reduce using rule 605 (relational-expression)
50 assignment-expression → conditional-expression • $default reduce using rule 50 (assignment-expression)
756 unqualified-id → conversion-function-id • $default reduce using rule 756 (unqualified-id)
746 unary-expression → delete-expression • $default reduce using rule 746 (unary-expression)
47 and-expression → equality-expression • [COMMA, ELLIPSIS, EQ, SEMICOLON, CLOSE_PAREN, AND, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, QUERY, AND_AND, OR_OR, XOR, GREATER, OR] 257 equality-expression → equality-expression • EQ_EQ relational-expression 258 | equality-expression • NOT_EQ relational-expression EQ_EQ shift, and go to state 529 NOT_EQ shift, and go to state 530 $default reduce using rule 47 (and-expression)
263 exclusive-or-expression → exclusive-or-expression • XOR and-expression 344 inclusive-or-expression → exclusive-or-expression • [COMMA, ELLIPSIS, EQ, SEMICOLON, CLOSE_PAREN, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, QUERY, AND_AND, OR_OR, GREATER, OR] XOR shift, and go to state 531 $default reduce using rule 344 (inclusive-or-expression)
214 decltype-specifier → DECLTYPE OPEN_PAREN expression • CLOSE_PAREN 278 expression → expression • COMMA assignment-expression COMMA shift, and go to state 532 CLOSE_PAREN shift, and go to state 533
581 primary-expression → fold-expression • $default reduce using rule 581 (primary-expression)
579 primary-expression → id-expression • $default reduce using rule 579 (primary-expression)
345 inclusive-or-expression → inclusive-or-expression • OR exclusive-or-expression 394 logical-and-expression → inclusive-or-expression • [COMMA, ELLIPSIS, EQ, SEMICOLON, CLOSE_PAREN, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, QUERY, AND_AND, OR_OR, GREATER] OR shift, and go to state 534 $default reduce using rule 394 (logical-and-expression)
580 primary-expression → lambda-expression • $default reduce using rule 580 (primary-expression)
131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 191 decl-specifier-seq-opt → • %empty [NOEXCEPT, ALIGNAS, OPEN_SQUARE, OPEN_BRACE, DEREF] 192 | • decl-specifier-seq 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 384 lambda-declarator → • lambda-specifiers 385 | • OPEN_PAREN parameter-declaration-clause CLOSE_PAREN lambda-specifiers requires-clause-opt 386 lambda-expression → lambda-introducer • lambda-declarator compound-statement 387 | lambda-introducer • LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 389 lambda-specifiers → • decl-specifier-seq-opt noexcept-specifier-opt attribute-specifier-seq-opt trailing-return-type-opt 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id CONSTEXPR shift, and go to state 1 EXTERN shift, and go to state 149 IDENTIFIER shift, and go to state 4 INLINE shift, and go to state 150 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 OPEN_PAREN shift, and go to state 535 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 LESS shift, and go to state 536 EXPLICIT shift, and go to state 23 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 191 (decl-specifier-seq-opt) class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 537 decl-specifier-seq-opt go to state 538 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 153 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 lambda-declarator go to state 539 lambda-specifiers go to state 540 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109
694 template-id → literal-operator-id • LESS template-argument-list-opt GREATER 757 unqualified-id → literal-operator-id • [COMMA, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, PLUS, MINUS, USING, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, ASM, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, OPEN_SQUARE, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, CLASS, STRUCT, UNION, FINAL, SPACESHIP, CONCEPT, QUERY, AND_AND, OR_OR, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, DOT, ENUM, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, EXPLICIT, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR, TRY, IMPORT, NAMESPACE, REQUIRES, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE, OVERRIDE] LESS shift, and go to state 541 LESS [reduce using rule 757 (unqualified-id)] $default reduce using rule 757 (unqualified-id)
395 logical-and-expression → logical-and-expression • AND_AND inclusive-or-expression 396 logical-or-expression → logical-and-expression • [COMMA, ELLIPSIS, EQ, SEMICOLON, CLOSE_PAREN, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, QUERY, OR_OR, GREATER] AND_AND shift, and go to state 542 $default reduce using rule 396 (logical-or-expression)
53 assignment-expression → logical-or-expression • assignment-operator initializer-clause 56 assignment-operator → • EQ 57 | • MULT_EQ 58 | • DIV_EQ 59 | • MOD_EQ 60 | • PLUS_EQ 61 | • MINUS_EQ 62 | • RSHIFT_EQ 63 | • LSHIFT_EQ 64 | • AND_EQ 65 | • XOR_EQ 66 | • OR_EQ 156 conditional-expression → logical-or-expression • [COMMA, ELLIPSIS, EQ, SEMICOLON, CLOSE_PAREN, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, GREATER] 157 | logical-or-expression • QUERY expression COLON assignment-expression 397 logical-or-expression → logical-or-expression • OR_OR logical-and-expression EQ shift, and go to state 543 MULT_EQ shift, and go to state 544 DIV_EQ shift, and go to state 545 MOD_EQ shift, and go to state 546 PLUS_EQ shift, and go to state 547 MINUS_EQ shift, and go to state 548 RSHIFT_EQ shift, and go to state 549 LSHIFT_EQ shift, and go to state 550 AND_EQ shift, and go to state 551 XOR_EQ shift, and go to state 552 OR_EQ shift, and go to state 553 QUERY shift, and go to state 554 OR_OR shift, and go to state 555 EQ [reduce using rule 156 (conditional-expression)] $default reduce using rule 156 (conditional-expression) assignment-operator go to state 556
41 additive-expression → multiplicative-expression • [COMMA, ELLIPSIS, PLUS, MINUS, EQ, SEMICOLON, CLOSE_PAREN, AND, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, SPACESHIP, QUERY, AND_AND, OR_OR, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ] 440 multiplicative-expression → multiplicative-expression • MULT pm-expression 441 | multiplicative-expression • DIV pm-expression 442 | multiplicative-expression • MOD pm-expression MULT shift, and go to state 557 DIV shift, and go to state 558 MOD shift, and go to state 559 $default reduce using rule 41 (additive-expression)
21 TEMPLATE-opt → • %empty [IDENTIFIER, OPERATOR, COMPL] 22 | • TEMPLATE 456 nested-name-specifier → nested-name-specifier • IDENTIFIER SCOPE 457 | nested-name-specifier • TEMPLATE-opt simple-template-id SCOPE 459 nested-name-specifier-opt → nested-name-specifier • [IDENTIFIER] 599 qualified-id → nested-name-specifier • TEMPLATE-opt unqualified-id 645 simple-type-specifier → nested-name-specifier • TEMPLATE simple-template-id IDENTIFIER shift, and go to state 197 TEMPLATE shift, and go to state 198 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] IDENTIFIER [reduce using rule 459 (nested-name-specifier-opt)] $default reduce using rule 21 (TEMPLATE-opt) TEMPLATE-opt go to state 560
745 unary-expression → new-expression • $default reduce using rule 745 (unary-expression)
744 unary-expression → noexcept-expression • $default reduce using rule 744 (unary-expression)
693 template-id → operator-function-id • LESS template-argument-list-opt GREATER 755 unqualified-id → operator-function-id • [COMMA, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, PLUS, MINUS, USING, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, ASM, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, OPEN_SQUARE, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, CLASS, STRUCT, UNION, FINAL, SPACESHIP, CONCEPT, QUERY, AND_AND, OR_OR, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, DOT, ENUM, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, EXPLICIT, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR, TRY, IMPORT, NAMESPACE, REQUIRES, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE, OVERRIDE] LESS shift, and go to state 561 LESS [reduce using rule 755 (unqualified-id)] $default reduce using rule 755 (unqualified-id)
439 multiplicative-expression → pm-expression • [COMMA, ELLIPSIS, PLUS, MINUS, EQ, SEMICOLON, CLOSE_PAREN, AND, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, SPACESHIP, QUERY, AND_AND, OR_OR, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ] 557 pm-expression → pm-expression • DOT_STAR cast-expression 558 | pm-expression • DEREF_STAR cast-expression DOT_STAR shift, and go to state 562 DEREF_STAR shift, and go to state 563 $default reduce using rule 439 (multiplicative-expression)
560 postfix-expression → postfix-expression • OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | postfix-expression • OPEN_PAREN expression-list-opt CLOSE_PAREN 566 | postfix-expression • DOT TEMPLATE-opt id-expression 567 | postfix-expression • DEREF TEMPLATE-opt id-expression 568 | postfix-expression • PLUS_PLUS 569 | postfix-expression • MINUS_MINUS 735 unary-expression → postfix-expression • [COMMA, ELLIPSIS, PLUS, MINUS, EQ, SEMICOLON, CLOSE_PAREN, AND, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, SPACESHIP, QUERY, AND_AND, OR_OR, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR] OPEN_PAREN shift, and go to state 564 OPEN_SQUARE shift, and go to state 565 DEREF shift, and go to state 566 DOT shift, and go to state 567 PLUS_PLUS shift, and go to state 568 MINUS_MINUS shift, and go to state 569 $default reduce using rule 735 (unary-expression)
559 postfix-expression → primary-expression • $default reduce using rule 559 (postfix-expression)
341 id-expression → qualified-id • $default reduce using rule 341 (id-expression)
256 equality-expression → relational-expression • [COMMA, ELLIPSIS, EQ, SEMICOLON, CLOSE_PAREN, AND, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, QUERY, AND_AND, OR_OR, EQ_EQ, NOT_EQ, XOR, GREATER, OR] 606 relational-expression → relational-expression • LESS compare-expression 607 | relational-expression • GREATER compare-expression 608 | relational-expression • LESS_EQ compare-expression 609 | relational-expression • GREATER_EQ compare-expression LESS shift, and go to state 570 GREATER shift, and go to state 571 LESS_EQ shift, and go to state 572 GREATER_EQ shift, and go to state 573 GREATER [reduce using rule 256 (equality-expression)] $default reduce using rule 256 (equality-expression)
582 primary-expression → requires-expression • $default reduce using rule 582 (primary-expression)
146 compare-expression → shift-expression • [COMMA, ELLIPSIS, EQ, SEMICOLON, CLOSE_PAREN, AND, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, SPACESHIP, QUERY, AND_AND, OR_OR, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, OR, LESS_EQ, GREATER_EQ] 633 shift-expression → shift-expression • LSHIFT additive-expression 634 | shift-expression • RSHIFT additive-expression LSHIFT shift, and go to state 574 RSHIFT shift, and go to state 575 $default reduce using rule 146 (compare-expression)
138 class-name → simple-template-id • [SCOPE] 692 template-id → simple-template-id • [COMMA, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, PLUS, MINUS, USING, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, ASM, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, OPEN_SQUARE, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, CLASS, STRUCT, UNION, FINAL, SPACESHIP, CONCEPT, QUERY, AND_AND, OR_OR, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, DOT, ENUM, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, EXPLICIT, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR, TRY, IMPORT, NAMESPACE, REQUIRES, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE, OVERRIDE] 731 typedef-name → simple-template-id • [SCOPE] SCOPE reduce using rule 138 (class-name) SCOPE [reduce using rule 692 (template-id)] SCOPE [reduce using rule 731 (typedef-name)] $default reduce using rule 692 (template-id)
120 braced-init-list → • OPEN_BRACE initializer-list COMMA-opt CLOSE_BRACE 121 | • OPEN_BRACE designated-initializer-list COMMA-opt CLOSE_BRACE 122 | • OPEN_BRACE CLOSE_BRACE 562 postfix-expression → simple-type-specifier • OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | simple-type-specifier • braced-init-list OPEN_PAREN shift, and go to state 576 OPEN_BRACE shift, and go to state 378 braced-init-list go to state 577
760 unqualified-id → template-id • $default reduce using rule 760 (unqualified-id)
52 assignment-expression → throw-expression • $default reduce using rule 52 (assignment-expression)
120 braced-init-list → • OPEN_BRACE initializer-list COMMA-opt CLOSE_BRACE 121 | • OPEN_BRACE designated-initializer-list COMMA-opt CLOSE_BRACE 122 | • OPEN_BRACE CLOSE_BRACE 563 postfix-expression → typename-specifier • OPEN_PAREN expression-list-opt CLOSE_PAREN 565 | typename-specifier • braced-init-list OPEN_PAREN shift, and go to state 578 OPEN_BRACE shift, and go to state 378 braced-init-list go to state 579
129 cast-expression → unary-expression • $default reduce using rule 129 (cast-expression)
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 736 | unary-operator • cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 await-expression go to state 268 cast-expression go to state 580 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
340 id-expression → unqualified-id • $default reduce using rule 340 (id-expression)
51 assignment-expression → yield-expression • $default reduce using rule 51 (assignment-expression)
228 elaborated-enum-specifier → ENUM nested-name-specifier-opt IDENTIFIER • $default reduce using rule 228 (elaborated-enum-specifier)
158 constant-expression → conditional-expression • $default reduce using rule 158 (constant-expression)
266 explicit-specifier → EXPLICIT OPEN_PAREN constant-expression • CLOSE_PAREN CLOSE_PAREN shift, and go to state 581
156 conditional-expression → logical-or-expression • [COMMA, ELLIPSIS, EQ, SEMICOLON, CLOSE_PAREN, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, GREATER] 157 | logical-or-expression • QUERY expression COLON assignment-expression 397 logical-or-expression → logical-or-expression • OR_OR logical-and-expression QUERY shift, and go to state 554 OR_OR shift, and go to state 555 $default reduce using rule 156 (conditional-expression)
332 global-module-fragment → MODULE SEMICOLON declaration-seq-opt • $default reduce using rule 332 (global-module-fragment)
432 module-name-qualifier → IDENTIFIER DOT • $default reduce using rule 432 (module-name-qualifier)
436 module-partition → COLON module-name-qualifier-opt • IDENTIFIER IDENTIFIER shift, and go to state 582
45 alignment-specifier → • ALIGNAS OPEN_PAREN type-id ELLIPSIS-opt CLOSE_PAREN 46 | • ALIGNAS OPEN_PAREN constant-expression ELLIPSIS-opt CLOSE_PAREN 80 attribute-specifier → • OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE 81 | • alignment-specifier 82 attribute-specifier-seq → attribute-specifier-seq-opt • attribute-specifier 430 module-import-declaration → IMPORT header-name attribute-specifier-seq-opt • SEMICOLON SEMICOLON shift, and go to state 583 ALIGNAS shift, and go to state 157 OPEN_SQUARE shift, and go to state 161 alignment-specifier go to state 165 attribute-specifier go to state 166
45 alignment-specifier → • ALIGNAS OPEN_PAREN type-id ELLIPSIS-opt CLOSE_PAREN 46 | • ALIGNAS OPEN_PAREN constant-expression ELLIPSIS-opt CLOSE_PAREN 80 attribute-specifier → • OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE 81 | • alignment-specifier 82 attribute-specifier-seq → attribute-specifier-seq-opt • attribute-specifier 428 module-import-declaration → IMPORT module-name attribute-specifier-seq-opt • SEMICOLON SEMICOLON shift, and go to state 584 ALIGNAS shift, and go to state 157 OPEN_SQUARE shift, and go to state 161 alignment-specifier go to state 165 attribute-specifier go to state 166
433 module-name-qualifier → module-name-qualifier IDENTIFIER • DOT DOT shift, and go to state 585
431 module-name → module-name-qualifier-opt IDENTIFIER • $default reduce using rule 431 (module-name)
45 alignment-specifier → • ALIGNAS OPEN_PAREN type-id ELLIPSIS-opt CLOSE_PAREN 46 | • ALIGNAS OPEN_PAREN constant-expression ELLIPSIS-opt CLOSE_PAREN 80 attribute-specifier → • OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE 81 | • alignment-specifier 82 attribute-specifier-seq → attribute-specifier-seq-opt • attribute-specifier 429 module-import-declaration → IMPORT module-partition attribute-specifier-seq-opt • SEMICOLON SEMICOLON shift, and go to state 586 ALIGNAS shift, and go to state 157 OPEN_SQUARE shift, and go to state 161 alignment-specifier go to state 165 attribute-specifier go to state 166
137 class-name → • IDENTIFIER 138 | • simple-template-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 445 namespace-alias-definition → NAMESPACE IDENTIFIER EQ • qualified-namespace-specifier SEMICOLON 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 600 qualified-namespace-specifier → • nested-name-specifier-opt namespace-name 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 DECLTYPE shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 132 nested-name-specifier-opt go to state 587 qualified-namespace-specifier go to state 588 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
13 INLINE-opt → • %empty [IDENTIFIER] 14 | • INLINE 235 enclosing-namespace-specifier → enclosing-namespace-specifier SCOPE • INLINE-opt IDENTIFIER 460 nested-namespace-definition → NAMESPACE enclosing-namespace-specifier SCOPE • INLINE-opt IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE INLINE shift, and go to state 589 $default reduce using rule 13 (INLINE-opt) INLINE-opt go to state 590
675 static_assert-declaration → STATIC_ASSERT OPEN_PAREN constant-expression • CLOSE_PAREN SEMICOLON 676 | STATIC_ASSERT OPEN_PAREN constant-expression • COMMA string-literal CLOSE_PAREN SEMICOLON COMMA shift, and go to state 591 CLOSE_PAREN shift, and go to state 592
264 explicit-instantiation → EXTERN-opt TEMPLATE declaration • $default reduce using rule 264 (explicit-instantiation)
45 alignment-specifier → • ALIGNAS OPEN_PAREN type-id ELLIPSIS-opt CLOSE_PAREN 46 | • ALIGNAS OPEN_PAREN constant-expression ELLIPSIS-opt CLOSE_PAREN 80 attribute-specifier → • OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE 81 | • alignment-specifier 82 attribute-specifier-seq → attribute-specifier-seq-opt • attribute-specifier 443 named-namespace-definition → INLINE-opt NAMESPACE attribute-specifier-seq-opt • IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE 753 unnamed-namespace-definition → INLINE-opt NAMESPACE attribute-specifier-seq-opt • OPEN_BRACE namespace-body CLOSE_BRACE IDENTIFIER shift, and go to state 593 ALIGNAS shift, and go to state 157 OPEN_SQUARE shift, and go to state 161 OPEN_BRACE shift, and go to state 594 alignment-specifier go to state 165 attribute-specifier go to state 166
351 init-declarator-list → init-declarator-list • COMMA init-declarator 640 simple-declaration → attribute-specifier-seq decl-specifier-seq init-declarator-list • SEMICOLON COMMA shift, and go to state 385 SEMICOLON shift, and go to state 595
45 alignment-specifier → • ALIGNAS OPEN_PAREN type-id ELLIPSIS-opt CLOSE_PAREN 46 | • ALIGNAS OPEN_PAREN constant-expression ELLIPSIS-opt CLOSE_PAREN 80 attribute-specifier → • OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE 81 | • alignment-specifier 82 attribute-specifier-seq → attribute-specifier-seq-opt • attribute-specifier 137 class-name → • IDENTIFIER 138 | • simple-template-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 239 enum-head → enum-key attribute-specifier-seq-opt • enum-head-name-opt enum-base-opt 240 enum-head-name → • nested-name-specifier-opt IDENTIFIER 241 enum-head-name-opt → • %empty [COLON, OPEN_BRACE] 242 | • enum-head-name 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 ALIGNAS shift, and go to state 157 OPEN_SQUARE shift, and go to state 161 DECLTYPE shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] $default reduce using rule 241 (enum-head-name-opt) alignment-specifier go to state 165 attribute-specifier go to state 166 class-name go to state 55 decltype-specifier go to state 120 enum-head-name go to state 596 enum-head-name-opt go to state 393 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 132 nested-name-specifier-opt go to state 394 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
137 class-name → • IDENTIFIER 138 | • simple-template-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 766 using-directive → attribute-specifier-seq-opt USING NAMESPACE • nested-name-specifier-opt namespace-name SEMICOLON IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 DECLTYPE shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 132 nested-name-specifier-opt go to state 597 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 45 alignment-specifier → ALIGNAS OPEN_PAREN • type-id ELLIPSIS-opt CLOSE_PAREN 46 | ALIGNAS OPEN_PAREN • constant-expression ELLIPSIS-opt CLOSE_PAREN 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 158 constant-expression → • conditional-expression 169 conversion-function-id → • OPERATOR conversion-type-id 175 cv-qualifier → • CONST 176 | • VOLATILE 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 711 type-id → • type-specifier-seq abstract-declarator-opt 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 728 type-specifier-seq → • type-specifier attribute-specifier-seq-opt 729 | • type-specifier type-specifier-seq 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 OPERATOR shift, and go to state 248 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 124 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-key go to state 404 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 307 constant-expression go to state 598 conversion-function-id go to state 272 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 273 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 309 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 407 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 599 type-name go to state 106 type-specifier go to state 412 type-specifier-seq go to state 413 typedef-name go to state 108 typename-specifier go to state 414 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
491 noptr-declarator → noptr-declarator • parameters-and-qualifiers 492 | noptr-declarator • OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 553 parameters-and-qualifiers → • OPEN_PAREN parameter-declaration-clause CLOSE_PAREN cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt 590 ptr-declarator → noptr-declarator • [COMMA, ELLIPSIS, EQ, SEMICOLON, OPEN_PAREN, CLOSE_PAREN, COLON, OPEN_BRACE, FINAL, GREATER, TRY, REQUIRES, OVERRIDE] OPEN_PAREN shift, and go to state 345 OPEN_SQUARE shift, and go to state 346 OPEN_PAREN [reduce using rule 590 (ptr-declarator)] $default reduce using rule 590 (ptr-declarator) parameters-and-qualifiers go to state 600
493 noptr-declarator → OPEN_PAREN ptr-declarator • CLOSE_PAREN CLOSE_PAREN shift, and go to state 601
45 alignment-specifier → • ALIGNAS OPEN_PAREN type-id ELLIPSIS-opt CLOSE_PAREN 46 | • ALIGNAS OPEN_PAREN constant-expression ELLIPSIS-opt CLOSE_PAREN 80 attribute-specifier → • OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE 81 | • alignment-specifier 82 attribute-specifier-seq → attribute-specifier-seq-opt • attribute-specifier 593 ptr-operator → AND attribute-specifier-seq-opt • [COMMA, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, PLUS, MINUS, USING, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, ASM, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, OPEN_SQUARE, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, CLASS, STRUCT, UNION, FINAL, SPACESHIP, CONCEPT, QUERY, AND_AND, OR_OR, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, DOT, ENUM, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, EXPLICIT, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR, TRY, IMPORT, NAMESPACE, REQUIRES, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE, OVERRIDE] ALIGNAS shift, and go to state 157 OPEN_SQUARE shift, and go to state 161 ALIGNAS [reduce using rule 593 (ptr-operator)] OPEN_SQUARE [reduce using rule 593 (ptr-operator)] $default reduce using rule 593 (ptr-operator) alignment-specifier go to state 165 attribute-specifier go to state 166
49 asm-declaration → attribute-specifier-seq-opt ASM OPEN_PAREN • string-literal CLOSE_PAREN SEMICOLON 681 string-literal → • STRING_LITERAL STRING_LITERAL shift, and go to state 117 string-literal go to state 602
80 attribute-specifier → OPEN_SQUARE OPEN_SQUARE • attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE 87 attribute-using-prefix → • USING attribute-namespace COLON 88 attribute-using-prefix-opt → • %empty [COMMA, IDENTIFIER, CLOSE_SQUARE] 89 | • attribute-using-prefix USING shift, and go to state 603 $default reduce using rule 88 (attribute-using-prefix-opt) attribute-using-prefix go to state 604 attribute-using-prefix-opt go to state 605
45 alignment-specifier → • ALIGNAS OPEN_PAREN type-id ELLIPSIS-opt CLOSE_PAREN 46 | • ALIGNAS OPEN_PAREN constant-expression ELLIPSIS-opt CLOSE_PAREN 80 attribute-specifier → • OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE 81 | • alignment-specifier 82 attribute-specifier-seq → attribute-specifier-seq-opt • attribute-specifier 594 ptr-operator → AND_AND attribute-specifier-seq-opt • [COMMA, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, PLUS, MINUS, USING, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, ASM, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, OPEN_SQUARE, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, CLASS, STRUCT, UNION, FINAL, SPACESHIP, CONCEPT, QUERY, AND_AND, OR_OR, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, DOT, ENUM, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, EXPLICIT, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR, TRY, IMPORT, NAMESPACE, REQUIRES, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE, OVERRIDE] ALIGNAS shift, and go to state 157 OPEN_SQUARE shift, and go to state 161 ALIGNAS [reduce using rule 594 (ptr-operator)] OPEN_SQUARE [reduce using rule 594 (ptr-operator)] $default reduce using rule 594 (ptr-operator) alignment-specifier go to state 165 attribute-specifier go to state 166
45 alignment-specifier → • ALIGNAS OPEN_PAREN type-id ELLIPSIS-opt CLOSE_PAREN 46 | • ALIGNAS OPEN_PAREN constant-expression ELLIPSIS-opt CLOSE_PAREN 80 attribute-specifier → • OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE 81 | • alignment-specifier 82 attribute-specifier-seq → attribute-specifier-seq-opt • attribute-specifier 175 cv-qualifier → • CONST 176 | • VOLATILE 177 cv-qualifier-seq → • cv-qualifier cv-qualifier-seq-opt 178 cv-qualifier-seq-opt → • %empty [COMMA, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, PLUS, MINUS, USING, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, ASM, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, OPEN_SQUARE, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, CLASS, STRUCT, UNION, FINAL, SPACESHIP, CONCEPT, QUERY, AND_AND, OR_OR, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, DOT, ENUM, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, EXPLICIT, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR, TRY, IMPORT, NAMESPACE, REQUIRES, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE, OVERRIDE] 179 | • cv-qualifier-seq 592 ptr-operator → MULT attribute-specifier-seq-opt • cv-qualifier-seq-opt ALIGNAS shift, and go to state 157 OPEN_SQUARE shift, and go to state 161 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 ALIGNAS [reduce using rule 178 (cv-qualifier-seq-opt)] OPEN_SQUARE [reduce using rule 178 (cv-qualifier-seq-opt)] CONST [reduce using rule 178 (cv-qualifier-seq-opt)] VOLATILE [reduce using rule 178 (cv-qualifier-seq-opt)] $default reduce using rule 178 (cv-qualifier-seq-opt) alignment-specifier go to state 165 attribute-specifier go to state 166 cv-qualifier go to state 606 cv-qualifier-seq go to state 607 cv-qualifier-seq-opt go to state 608
137 class-name → • IDENTIFIER 138 | • simple-template-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 758 unqualified-id → COMPL • type-name 759 | COMPL • decltype-specifier IDENTIFIER shift, and go to state 505 DECLTYPE shift, and go to state 21 class-name go to state 55 decltype-specifier go to state 506 enum-name go to state 71 simple-template-id go to state 96 template-name go to state 102 type-name go to state 507 typedef-name go to state 108
213 declarator-id → ELLIPSIS-opt id-expression • $default reduce using rule 213 (declarator-id)
21 TEMPLATE-opt → • %empty [IDENTIFIER, OPERATOR, COMPL] 22 | • TEMPLATE 456 nested-name-specifier → nested-name-specifier • IDENTIFIER SCOPE 457 | nested-name-specifier • TEMPLATE-opt simple-template-id SCOPE 599 qualified-id → nested-name-specifier • TEMPLATE-opt unqualified-id IDENTIFIER shift, and go to state 197 TEMPLATE shift, and go to state 229 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] $default reduce using rule 21 (TEMPLATE-opt) TEMPLATE-opt go to state 560
601 ref-qualifier → AND • $default reduce using rule 601 (ref-qualifier)
602 ref-qualifier → AND_AND • $default reduce using rule 602 (ref-qualifier)
604 ref-qualifier-opt → ref-qualifier • $default reduce using rule 604 (ref-qualifier-opt)
641 simple-declaration → attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt • OPEN_SQUARE identifier-list CLOSE_SQUARE initializer SEMICOLON OPEN_SQUARE shift, and go to state 609
327 function-definition → attribute-specifier-seq-opt decl-specifier-seq-opt declarator • virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator • requires-clause function-body 620 requires-clause → • REQUIRES constraint-logical-or-expression 768 virt-specifier → • OVERRIDE 769 | • FINAL 770 virt-specifier-seq → • virt-specifier 771 | • virt-specifier-seq virt-specifier 772 virt-specifier-seq-opt → • %empty [EQ, COLON, OPEN_BRACE, TRY] 773 | • virt-specifier-seq FINAL shift, and go to state 610 REQUIRES shift, and go to state 379 OVERRIDE shift, and go to state 611 $default reduce using rule 772 (virt-specifier-seq-opt) requires-clause go to state 612 virt-specifier go to state 613 virt-specifier-seq go to state 614 virt-specifier-seq-opt go to state 615
476 nodeclspec-function-declaration → attribute-specifier-seq-opt declarator SEMICOLON • $default reduce using rule 476 (nodeclspec-function-declaration)
45 alignment-specifier → • ALIGNAS OPEN_PAREN type-id ELLIPSIS-opt CLOSE_PAREN 46 | • ALIGNAS OPEN_PAREN constant-expression ELLIPSIS-opt CLOSE_PAREN 80 attribute-specifier → • OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE 81 | • alignment-specifier 82 attribute-specifier-seq → attribute-specifier-seq-opt • attribute-specifier 490 noptr-declarator → declarator-id attribute-specifier-seq-opt • [COMMA, ELLIPSIS, EQ, SEMICOLON, OPEN_PAREN, CLOSE_PAREN, OPEN_SQUARE, COLON, OPEN_BRACE, FINAL, GREATER, TRY, REQUIRES, OVERRIDE] ALIGNAS shift, and go to state 157 OPEN_SQUARE shift, and go to state 161 OPEN_SQUARE [reduce using rule 490 (noptr-declarator)] $default reduce using rule 490 (noptr-declarator) alignment-specifier go to state 165 attribute-specifier go to state 166
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty 84 | • attribute-specifier-seq 595 ptr-operator → nested-name-specifier MULT • attribute-specifier-seq-opt cv-qualifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 616
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, EXTERN, IDENTIFIER, INLINE, SCOPE, THIS, TYPENAME, VIRTUAL, ALIGNAS, OPEN_SQUARE, CLASS, STRUCT, UNION, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 84 | • attribute-specifier-seq 543 parameter-declaration → • attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 544 | • attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator EQ initializer-clause 545 | • attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 546 | • attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt EQ initializer-clause 547 parameter-declaration-clause → • parameter-declaration-list-opt ELLIPSIS-opt 548 | • parameter-declaration-list COMMA ELLIPSIS 549 parameter-declaration-list → • parameter-declaration 550 | • parameter-declaration-list COMMA parameter-declaration 551 parameter-declaration-list-opt → • %empty [ELLIPSIS, CLOSE_PAREN] 552 | • parameter-declaration-list 553 parameters-and-qualifiers → OPEN_PAREN • parameter-declaration-clause CLOSE_PAREN cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt ELLIPSIS reduce using rule 551 (parameter-declaration-list-opt) CLOSE_PAREN reduce using rule 551 (parameter-declaration-list-opt) $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 219 parameter-declaration go to state 617 parameter-declaration-clause go to state 618 parameter-declaration-list go to state 619 parameter-declaration-list-opt go to state 620
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 158 constant-expression → • conditional-expression 159 constant-expression-opt → • %empty [CLOSE_SQUARE] 160 | • constant-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 492 noptr-declarator → noptr-declarator OPEN_SQUARE • constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] CLOSE_SQUARE reduce using rule 159 (constant-expression-opt) DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 307 constant-expression go to state 621 constant-expression-opt go to state 622 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 309 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
212 declarator → noptr-declarator parameters-and-qualifiers • trailing-return-type 491 noptr-declarator → noptr-declarator parameters-and-qualifiers • [COMMA, ELLIPSIS, EQ, SEMICOLON, OPEN_PAREN, CLOSE_PAREN, OPEN_SQUARE, COLON, OPEN_BRACE, FINAL, GREATER, TRY, REQUIRES, OVERRIDE] 701 trailing-return-type → • DEREF type-id DEREF shift, and go to state 623 $default reduce using rule 491 (noptr-declarator) trailing-return-type go to state 624
591 ptr-declarator → ptr-operator ptr-declarator • $default reduce using rule 591 (ptr-declarator)
36 access-specifier → PRIVATE • $default reduce using rule 36 (access-specifier)
37 access-specifier → PROTECTED • $default reduce using rule 37 (access-specifier)
38 access-specifier → PUBLIC • $default reduce using rule 38 (access-specifier)
243 enum-key → ENUM • [IDENTIFIER, SCOPE, ALIGNAS, OPEN_SQUARE, DECLTYPE] 244 | ENUM • CLASS 245 | ENUM • STRUCT CLASS shift, and go to state 130 STRUCT shift, and go to state 131 $default reduce using rule 243 (enum-key)
424 member-specification → access-specifier • COLON member-specification-opt COLON shift, and go to state 625
412 member-declaration → alias-declaration • $default reduce using rule 412 (member-declaration)
45 alignment-specifier → • ALIGNAS OPEN_PAREN type-id ELLIPSIS-opt CLOSE_PAREN 46 | • ALIGNAS OPEN_PAREN constant-expression ELLIPSIS-opt CLOSE_PAREN 80 attribute-specifier → • OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE 81 | • alignment-specifier 82 attribute-specifier-seq → attribute-specifier-seq-opt • attribute-specifier 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 191 decl-specifier-seq-opt → • %empty [ELLIPSIS, IDENTIFIER, SCOPE, SEMICOLON, ALIGNAS, OPEN_PAREN, AND, OPEN_SQUARE, COLON, AND_AND, OPERATOR, DECLTYPE, MULT, COMPL] 192 | • decl-specifier-seq 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 327 function-definition → attribute-specifier-seq-opt • decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt • decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 404 member-declaration → attribute-specifier-seq-opt • decl-specifier-seq-opt member-declarator-list-opt SEMICOLON 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id CONSTEXPR shift, and go to state 1 EXTERN shift, and go to state 149 IDENTIFIER shift, and go to state 4 INLINE shift, and go to state 150 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 ALIGNAS shift, and go to state 157 OPEN_SQUARE shift, and go to state 161 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 IDENTIFIER [reduce using rule 191 (decl-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] SCOPE [reduce using rule 191 (decl-specifier-seq-opt)] ALIGNAS [reduce using rule 191 (decl-specifier-seq-opt)] OPEN_SQUARE [reduce using rule 191 (decl-specifier-seq-opt)] DECLTYPE [reduce using rule 191 (decl-specifier-seq-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 191 (decl-specifier-seq-opt) alignment-specifier go to state 165 attribute-specifier go to state 166 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 537 decl-specifier-seq-opt go to state 626 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 153 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109
411 member-declaration → deduction-guide • $default reduce using rule 411 (member-declaration)
414 member-declaration → empty-declaration • $default reduce using rule 414 (member-declaration)
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty 84 | • attribute-specifier-seq 496 opaque-enum-declaration → enum-key • attribute-specifier-seq-opt enum-head-name enum-base-opt SEMICOLON $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 627
410 member-declaration → explicit-specialization • $default reduce using rule 410 (member-declaration)
269 explicit-specifier-opt → explicit-specifier • $default reduce using rule 269 (explicit-specifier-opt)
405 member-declaration → function-definition • $default reduce using rule 405 (member-declaration)
36 access-specifier → • PRIVATE 37 | • PROTECTED 38 | • PUBLIC 44 alias-declaration → • USING IDENTIFIER attribute-specifier-seq-opt EQ defining-type-id SEMICOLON 82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, ELLIPSIS, EXTERN, IDENTIFIER, INLINE, SCOPE, TYPENAME, VIRTUAL, SEMICOLON, ALIGNAS, OPEN_PAREN, AND, OPEN_SQUARE, COLON, CLASS, STRUCT, UNION, AND_AND, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, MULT, COMPL, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 84 | • attribute-specifier-seq 215 deduction-guide → • explicit-specifier-opt template-name OPEN_PAREN parameter-declaration-clause CLOSE_PAREN DEREF simple-template-id SEMICOLON 233 empty-declaration → • SEMICOLON 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 265 explicit-specialization → • TEMPLATE LESS GREATER declaration 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 268 explicit-specifier-opt → • %empty [IDENTIFIER] 269 | • explicit-specifier 327 function-definition → • attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | • attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 404 member-declaration → • attribute-specifier-seq-opt decl-specifier-seq-opt member-declarator-list-opt SEMICOLON 405 | • function-definition 406 | • using-declaration 407 | • using-enum-declaration 408 | • static_assert-declaration 409 | • template-declaration 410 | • explicit-specialization 411 | • deduction-guide 412 | • alias-declaration 413 | • opaque-enum-declaration 414 | • empty-declaration 423 member-specification → • member-declaration member-specification-opt 423 | member-declaration • member-specification-opt 424 | • access-specifier COLON member-specification-opt 425 member-specification-opt → • %empty [CLOSE_BRACE] 426 | • member-specification 496 opaque-enum-declaration → • enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt SEMICOLON 675 static_assert-declaration → • STATIC_ASSERT OPEN_PAREN constant-expression CLOSE_PAREN SEMICOLON 676 | • STATIC_ASSERT OPEN_PAREN constant-expression COMMA string-literal CLOSE_PAREN SEMICOLON 689 template-declaration → • template-head declaration 690 | • template-head concept-definition 691 template-head → • TEMPLATE LESS template-parameter-list GREATER requires-clause-opt 762 using-declaration → • USING using-declarator-list SEMICOLON 767 using-enum-declaration → • USING elaborated-enum-specifier SEMICOLON TEMPLATE shift, and go to state 7 PRIVATE shift, and go to state 349 PROTECTED shift, and go to state 350 PUBLIC shift, and go to state 351 USING shift, and go to state 10 SEMICOLON shift, and go to state 11 ENUM shift, and go to state 352 EXPLICIT shift, and go to state 23 STATIC_ASSERT shift, and go to state 41 IDENTIFIER reduce using rule 83 (attribute-specifier-seq-opt) IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] SEMICOLON [reduce using rule 83 (attribute-specifier-seq-opt)] CLOSE_BRACE reduce using rule 425 (member-specification-opt) ENUM [reduce using rule 83 (attribute-specifier-seq-opt)] EXPLICIT [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) access-specifier go to state 353 alias-declaration go to state 354 attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 355 deduction-guide go to state 356 empty-declaration go to state 357 enum-key go to state 358 explicit-specialization go to state 359 explicit-specifier go to state 360 explicit-specifier-opt go to state 76 function-definition go to state 361 member-declaration go to state 362 member-specification go to state 363 member-specification-opt go to state 628 opaque-enum-declaration go to state 365 static_assert-declaration go to state 366 template-declaration go to state 367 template-head go to state 101 using-declaration go to state 368 using-enum-declaration go to state 369
426 member-specification-opt → member-specification • $default reduce using rule 426 (member-specification-opt)
142 class-specifier → class-head OPEN_BRACE member-specification-opt • CLOSE_BRACE CLOSE_BRACE shift, and go to state 629
413 member-declaration → opaque-enum-declaration • $default reduce using rule 413 (member-declaration)
408 member-declaration → static_assert-declaration • $default reduce using rule 408 (member-declaration)
409 member-declaration → template-declaration • $default reduce using rule 409 (member-declaration)
406 member-declaration → using-declaration • $default reduce using rule 406 (member-declaration)
407 member-declaration → using-enum-declaration • $default reduce using rule 407 (member-declaration)
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty 84 | • attribute-specifier-seq 99 base-clause → COLON • base-specifier-list 102 base-specifier → • attribute-specifier-seq-opt class-or-decltype 103 | • attribute-specifier-seq-opt VIRTUAL access-specifier-opt class-or-decltype 104 | • attribute-specifier-seq-opt access-specifier VIRTUAL-opt class-or-decltype 105 base-specifier-list → • base-specifier ELLIPSIS-opt 106 | • base-specifier-list COMMA base-specifier ELLIPSIS-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 630 base-specifier go to state 631 base-specifier-list go to state 632
101 base-clause-opt → base-clause • $default reduce using rule 101 (base-clause-opt)
132 class-head → class-key attribute-specifier-seq-opt base-clause-opt • $default reduce using rule 132 (class-head)
131 class-head → class-key attribute-specifier-seq-opt class-head-name • class-virt-specifier-opt base-clause-opt 143 class-virt-specifier → • FINAL 144 class-virt-specifier-opt → • %empty [COLON, OPEN_BRACE] 145 | • class-virt-specifier FINAL shift, and go to state 633 $default reduce using rule 144 (class-virt-specifier-opt) class-virt-specifier go to state 634 class-virt-specifier-opt go to state 635
133 class-head-name → nested-name-specifier-opt • class-name 137 class-name → • IDENTIFIER 138 | • simple-template-id 229 elaborated-type-specifier → class-key attribute-specifier-seq-opt nested-name-specifier-opt • IDENTIFIER 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER IDENTIFIER shift, and go to state 636 class-name go to state 637 simple-template-id go to state 638 template-name go to state 102
231 elaborated-type-specifier → class-key nested-name-specifier TEMPLATE-opt • simple-template-id 457 nested-name-specifier → nested-name-specifier TEMPLATE-opt • simple-template-id SCOPE 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER IDENTIFIER shift, and go to state 191 simple-template-id go to state 639 template-name go to state 102
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 90 await-expression → • CO_AWAIT cast-expression 116 brace-or-equal-initializer → EQ • initializer-clause 120 braced-init-list → • OPEN_BRACE initializer-list COMMA-opt CLOSE_BRACE 121 | • OPEN_BRACE designated-initializer-list COMMA-opt CLOSE_BRACE 122 | • OPEN_BRACE CLOSE_BRACE 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 361 initializer-clause → • assignment-expression 362 | • braced-init-list 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPEN_BRACE shift, and go to state 378 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 640 await-expression go to state 268 braced-init-list go to state 641 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 initializer-clause go to state 642 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 90 await-expression → • CO_AWAIT cast-expression 120 braced-init-list → • OPEN_BRACE initializer-list COMMA-opt CLOSE_BRACE 121 | • OPEN_BRACE designated-initializer-list COMMA-opt CLOSE_BRACE 122 | • OPEN_BRACE CLOSE_BRACE 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 279 expression-list → • initializer-list 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 360 initializer → OPEN_PAREN • expression-list CLOSE_PAREN 361 initializer-clause → • assignment-expression 362 | • braced-init-list 363 initializer-list → • initializer-clause ELLIPSIS-opt 364 | • initializer-list COMMA initializer-clause ELLIPSIS-opt 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPEN_BRACE shift, and go to state 378 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 640 await-expression go to state 268 braced-init-list go to state 641 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression-list go to state 643 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 initializer-clause go to state 644 initializer-list go to state 645 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 90 await-expression → • CO_AWAIT cast-expression 120 braced-init-list → • OPEN_BRACE initializer-list COMMA-opt CLOSE_BRACE 120 | OPEN_BRACE • initializer-list COMMA-opt CLOSE_BRACE 121 | • OPEN_BRACE designated-initializer-list COMMA-opt CLOSE_BRACE 121 | OPEN_BRACE • designated-initializer-list COMMA-opt CLOSE_BRACE 122 | • OPEN_BRACE CLOSE_BRACE 122 | OPEN_BRACE • CLOSE_BRACE 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 224 designated-initializer-clause → • designator brace-or-equal-initializer 225 designated-initializer-list → • designated-initializer-clause 226 | • designated-initializer-list COMMA designated-initializer-clause 227 designator → • DOT IDENTIFIER 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 361 initializer-clause → • assignment-expression 362 | • braced-init-list 363 initializer-list → • initializer-clause ELLIPSIS-opt 364 | • initializer-list COMMA initializer-clause ELLIPSIS-opt 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPEN_BRACE shift, and go to state 378 CLOSE_BRACE shift, and go to state 646 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 DOT shift, and go to state 647 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 640 await-expression go to state 268 braced-init-list go to state 641 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 designated-initializer-clause go to state 648 designated-initializer-list go to state 649 designator go to state 650 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 initializer-clause go to state 644 initializer-list go to state 651 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
137 class-name → • IDENTIFIER 138 | • simple-template-id 162 constraint-logical-and-expression → • primary-expression 163 | • constraint-logical-and-expression AND_AND primary-expression 164 constraint-logical-or-expression → • constraint-logical-and-expression 165 | • constraint-logical-or-expression OR_OR constraint-logical-and-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 620 requires-clause → REQUIRES • constraint-logical-or-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 SCOPE shift, and go to state 6 THIS shift, and go to state 241 OPEN_PAREN shift, and go to state 652 OPEN_SQUARE shift, and go to state 246 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 REQUIRES shift, and go to state 250 COMPL shift, and go to state 334 LITERAL shift, and go to state 259 class-name go to state 55 constraint-logical-and-expression go to state 653 constraint-logical-or-expression go to state 654 conversion-function-id go to state 272 decltype-specifier go to state 120 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 336 operator-function-id go to state 289 primary-expression go to state 655 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 template-id go to state 299 template-name go to state 102 type-name go to state 106 typedef-name go to state 108 unqualified-id go to state 304
359 initializer → brace-or-equal-initializer • $default reduce using rule 359 (initializer)
117 brace-or-equal-initializer → braced-init-list • $default reduce using rule 117 (brace-or-equal-initializer)
366 initializer-opt → initializer • $default reduce using rule 366 (initializer-opt)
348 init-declarator → declarator initializer-opt • $default reduce using rule 348 (init-declarator)
349 init-declarator → declarator requires-clause • $default reduce using rule 349 (init-declarator)
5 ELLIPSIS-opt → • %empty [IDENTIFIER, SCOPE, OPERATOR, DECLTYPE, COMPL] 6 | • ELLIPSIS 137 class-name → • IDENTIFIER 138 | • simple-template-id 211 declarator → • ptr-declarator 212 | • noptr-declarator parameters-and-qualifiers trailing-return-type 213 declarator-id → • ELLIPSIS-opt id-expression 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 348 init-declarator → • declarator initializer-opt 349 | • declarator requires-clause 351 init-declarator-list → init-declarator-list COMMA • init-declarator 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 490 noptr-declarator → • declarator-id attribute-specifier-seq-opt 491 | • noptr-declarator parameters-and-qualifiers 492 | • noptr-declarator OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 493 | • OPEN_PAREN ptr-declarator CLOSE_PAREN 590 ptr-declarator → • noptr-declarator 591 | • ptr-operator ptr-declarator 592 ptr-operator → • MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 593 | • AND attribute-specifier-seq-opt 594 | • AND_AND attribute-specifier-seq-opt 595 | • nested-name-specifier MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id ELLIPSIS shift, and go to state 155 IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 OPEN_PAREN shift, and go to state 158 AND shift, and go to state 159 AND_AND shift, and go to state 162 DECLTYPE shift, and go to state 21 MULT shift, and go to state 163 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] SCOPE [reduce using rule 5 (ELLIPSIS-opt)] DECLTYPE [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 164 class-name go to state 55 declarator go to state 182 declarator-id go to state 170 decltype-specifier go to state 120 enum-name go to state 71 init-declarator go to state 656 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 noptr-declarator go to state 172 ptr-declarator go to state 173 ptr-operator go to state 174 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
639 simple-declaration → decl-specifier-seq init-declarator-list-opt SEMICOLON • $default reduce using rule 639 (simple-declaration)
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty 84 | • attribute-specifier-seq 249 enumerator → IDENTIFIER • attribute-specifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 657
250 enumerator-definition → enumerator • [COMMA, CLOSE_BRACE] 251 | enumerator • EQ constant-expression EQ shift, and go to state 658 $default reduce using rule 250 (enumerator-definition)
252 enumerator-list → enumerator-definition • $default reduce using rule 252 (enumerator-list)
248 enum-specifier → enum-head OPEN_BRACE enumerator-list • COMMA CLOSE_BRACE 253 enumerator-list → enumerator-list • COMMA enumerator-definition 255 enumerator-list-opt → enumerator-list • [CLOSE_BRACE] COMMA shift, and go to state 659 $default reduce using rule 255 (enumerator-list-opt)
247 enum-specifier → enum-head OPEN_BRACE enumerator-list-opt • CLOSE_BRACE CLOSE_BRACE shift, and go to state 660
236 enum-base → • COLON type-specifier-seq 237 enum-base-opt → • %empty [SEMICOLON] 238 | • enum-base 242 enum-head-name-opt → enum-head-name • [COLON, OPEN_BRACE] 496 opaque-enum-declaration → enum-key attribute-specifier-seq-opt enum-head-name • enum-base-opt SEMICOLON COLON shift, and go to state 661 COLON [reduce using rule 242 (enum-head-name-opt)] OPEN_BRACE reduce using rule 242 (enum-head-name-opt) $default reduce using rule 237 (enum-base-opt) enum-base go to state 662 enum-base-opt go to state 663
236 enum-base → • COLON type-specifier-seq 237 enum-base-opt → • %empty [OPEN_BRACE] 238 | • enum-base 239 enum-head → enum-key attribute-specifier-seq-opt enum-head-name-opt • enum-base-opt COLON shift, and go to state 661 $default reduce using rule 237 (enum-base-opt) enum-base go to state 662 enum-base-opt go to state 664
240 enum-head-name → nested-name-specifier-opt • IDENTIFIER IDENTIFIER shift, and go to state 665
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, EXTERN, IDENTIFIER, INLINE, SCOPE, THIS, TYPENAME, VIRTUAL, ALIGNAS, OPEN_SQUARE, CLASS, STRUCT, UNION, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 84 | • attribute-specifier-seq 215 deduction-guide → explicit-specifier-opt template-name OPEN_PAREN • parameter-declaration-clause CLOSE_PAREN DEREF simple-template-id SEMICOLON 543 parameter-declaration → • attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 544 | • attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator EQ initializer-clause 545 | • attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 546 | • attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt EQ initializer-clause 547 parameter-declaration-clause → • parameter-declaration-list-opt ELLIPSIS-opt 548 | • parameter-declaration-list COMMA ELLIPSIS 549 parameter-declaration-list → • parameter-declaration 550 | • parameter-declaration-list COMMA parameter-declaration 551 parameter-declaration-list-opt → • %empty [ELLIPSIS, CLOSE_PAREN] 552 | • parameter-declaration-list ELLIPSIS reduce using rule 551 (parameter-declaration-list-opt) CLOSE_PAREN reduce using rule 551 (parameter-declaration-list-opt) $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 219 parameter-declaration go to state 617 parameter-declaration-clause go to state 666 parameter-declaration-list go to state 619 parameter-declaration-list-opt go to state 620
427 module-declaration → EXPORT-opt MODULE • module-name module-partition-opt attribute-specifier-seq-opt SEMICOLON 431 module-name → • module-name-qualifier-opt IDENTIFIER 432 module-name-qualifier → • IDENTIFIER DOT 433 | • module-name-qualifier IDENTIFIER DOT 434 module-name-qualifier-opt → • %empty [IDENTIFIER] 435 | • module-name-qualifier IDENTIFIER shift, and go to state 136 IDENTIFIER [reduce using rule 434 (module-name-qualifier-opt)] module-name go to state 667 module-name-qualifier go to state 141 module-name-qualifier-opt go to state 142
583 private-module-fragment → • MODULE COLON PRIVATE SEMICOLON declaration-seq-opt 584 private-module-fragment-opt → • %empty [$end] 585 | • private-module-fragment 705 translation-unit → global-module-fragment-opt module-declaration declaration-seq-opt • private-module-fragment-opt MODULE shift, and go to state 668 $default reduce using rule 584 (private-module-fragment-opt) private-module-fragment go to state 669 private-module-fragment-opt go to state 670
456 nested-name-specifier → nested-name-specifier IDENTIFIER SCOPE • $default reduce using rule 456 (nested-name-specifier)
645 simple-type-specifier → nested-name-specifier TEMPLATE simple-template-id • $default reduce using rule 645 (simple-type-specifier)
457 nested-name-specifier → nested-name-specifier TEMPLATE-opt simple-template-id • SCOPE SCOPE shift, and go to state 671
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 158 constant-expression → • conditional-expression 169 conversion-function-id → • OPERATOR conversion-type-id 175 cv-qualifier → • CONST 176 | • VOLATILE 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 682 template-argument → • constant-expression 683 | • type-id 684 | • id-expression 685 template-argument-list → • template-argument ELLIPSIS-opt 686 | • template-argument-list COMMA template-argument ELLIPSIS-opt 687 template-argument-list-opt → • %empty [GREATER] 688 | • template-argument-list 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 708 | nested-name-specifier-opt concept-name LESS • template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 711 type-id → • type-specifier-seq abstract-declarator-opt 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 728 type-specifier-seq → • type-specifier attribute-specifier-seq-opt 729 | • type-specifier type-specifier-seq 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 OPERATOR shift, and go to state 248 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 124 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] GREATER reduce using rule 687 (template-argument-list-opt) AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-key go to state 404 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 307 constant-expression go to state 405 conversion-function-id go to state 272 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 273 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 406 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 309 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 407 template-argument go to state 408 template-argument-list go to state 409 template-argument-list-opt go to state 672 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 411 type-name go to state 106 type-specifier go to state 412 type-specifier-seq go to state 413 typedef-name go to state 108 typename-specifier go to state 414 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
151 concept-name → IDENTIFIER • $default reduce using rule 151 (concept-name)
150 concept-definition → CONCEPT concept-name • EQ constraint-expression SEMICOLON EQ shift, and go to state 673
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [IDENTIFIER, SCOPE, ALIGNAS, OPEN_SQUARE, DECLTYPE] 84 | • attribute-specifier-seq 137 class-name → • IDENTIFIER 138 | • simple-template-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 229 elaborated-type-specifier → class-key • attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | class-key • simple-template-id 231 | class-key • nested-name-specifier TEMPLATE-opt simple-template-id 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 DECLTYPE shift, and go to state 21 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 674 class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 178 simple-template-id go to state 179 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
682 template-argument → constant-expression • $default reduce using rule 682 (template-argument)
579 primary-expression → id-expression • [COMMA, ELLIPSIS, PLUS, MINUS, OPEN_PAREN, AND, OPEN_SQUARE, SPACESHIP, QUERY, AND_AND, OR_OR, DEREF, DOT, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR, PLUS_PLUS, MINUS_MINUS] 684 template-argument → id-expression • [COMMA, ELLIPSIS, GREATER] COMMA reduce using rule 579 (primary-expression) COMMA [reduce using rule 684 (template-argument)] ELLIPSIS reduce using rule 579 (primary-expression) ELLIPSIS [reduce using rule 684 (template-argument)] GREATER reduce using rule 579 (primary-expression) GREATER [reduce using rule 684 (template-argument)] $default reduce using rule 579 (primary-expression)
120 braced-init-list → • OPEN_BRACE initializer-list COMMA-opt CLOSE_BRACE 121 | • OPEN_BRACE designated-initializer-list COMMA-opt CLOSE_BRACE 122 | • OPEN_BRACE CLOSE_BRACE 562 postfix-expression → simple-type-specifier • OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | simple-type-specifier • braced-init-list 724 type-specifier → simple-type-specifier • [COMMA, CONSTEXPR, ELLIPSIS, EXTERN, IDENTIFIER, INLINE, SCOPE, TYPENAME, VIRTUAL, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, OPEN_SQUARE, CLASS, STRUCT, UNION, AND_AND, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, GREATER, EXPLICIT, MULT, COMPL, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] OPEN_PAREN shift, and go to state 576 OPEN_BRACE shift, and go to state 378 OPEN_PAREN [reduce using rule 724 (type-specifier)] $default reduce using rule 724 (type-specifier) braced-init-list go to state 577
5 ELLIPSIS-opt → • %empty [COMMA, GREATER] 6 | • ELLIPSIS 685 template-argument-list → template-argument • ELLIPSIS-opt ELLIPSIS shift, and go to state 155 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 675
686 template-argument-list → template-argument-list • COMMA template-argument ELLIPSIS-opt 688 template-argument-list-opt → template-argument-list • [GREATER] COMMA shift, and go to state 676 $default reduce using rule 688 (template-argument-list-opt)
643 simple-template-id → template-name LESS template-argument-list-opt • GREATER GREATER shift, and go to state 677
683 template-argument → type-id • $default reduce using rule 683 (template-argument)
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [COMMA, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, PLUS, MINUS, USING, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, ASM, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, OPEN_SQUARE, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, CLASS, STRUCT, UNION, FINAL, SPACESHIP, CONCEPT, QUERY, AND_AND, OR_OR, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, DOT, ENUM, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, EXPLICIT, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR, TRY, IMPORT, NAMESPACE, REQUIRES, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE, OVERRIDE] 84 | • attribute-specifier-seq 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 175 cv-qualifier → • CONST 176 | • VOLATILE 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 728 type-specifier-seq → • type-specifier attribute-specifier-seq-opt 728 | type-specifier • attribute-specifier-seq-opt 729 | • type-specifier type-specifier-seq 729 | type-specifier • type-specifier-seq 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 124 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] CLASS [reduce using rule 83 (attribute-specifier-seq-opt)] STRUCT [reduce using rule 83 (attribute-specifier-seq-opt)] UNION [reduce using rule 83 (attribute-specifier-seq-opt)] CONST [reduce using rule 83 (attribute-specifier-seq-opt)] VOLATILE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] ENUM [reduce using rule 83 (attribute-specifier-seq-opt)] AUTO reduce using rule 83 (attribute-specifier-seq-opt) AUTO [reduce using rule 709 (type-constraint-opt)] CHAR [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR8_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR16_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR32_T [reduce using rule 83 (attribute-specifier-seq-opt)] WCHAR_T [reduce using rule 83 (attribute-specifier-seq-opt)] BOOL [reduce using rule 83 (attribute-specifier-seq-opt)] SHORT [reduce using rule 83 (attribute-specifier-seq-opt)] INT [reduce using rule 83 (attribute-specifier-seq-opt)] LONG [reduce using rule 83 (attribute-specifier-seq-opt)] SIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] UNSIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] FLOAT [reduce using rule 83 (attribute-specifier-seq-opt)] DOUBLE [reduce using rule 83 (attribute-specifier-seq-opt)] VOID [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 678 class-key go to state 404 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 412 type-specifier-seq go to state 679 typedef-name go to state 108 typename-specifier go to state 109
29 abstract-declarator → • ptr-abstract-declarator 30 | • noptr-abstract-declarator-opt parameters-and-qualifiers trailing-return-type 31 | • abstract-pack-declarator 32 abstract-declarator-opt → • %empty [COMMA, ELLIPSIS, EQ, SEMICOLON, OPEN_PAREN, CLOSE_PAREN, COLON, OPEN_BRACE, FINAL, GREATER, TRY, REQUIRES, OVERRIDE] 33 | • abstract-declarator 34 abstract-pack-declarator → • noptr-abstract-pack-declarator 35 | • ptr-operator abstract-pack-declarator 137 class-name → • IDENTIFIER 138 | • simple-template-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 482 noptr-abstract-declarator → • noptr-abstract-declarator-opt parameters-and-qualifiers 483 | • noptr-abstract-declarator-opt OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 484 | • OPEN_PAREN ptr-abstract-declarator CLOSE_PAREN 485 noptr-abstract-declarator-opt → • %empty [OPEN_PAREN, OPEN_SQUARE] 486 | • noptr-abstract-declarator 487 noptr-abstract-pack-declarator → • noptr-abstract-pack-declarator parameters-and-qualifiers 488 | • noptr-abstract-pack-declarator OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 489 | • ELLIPSIS 586 ptr-abstract-declarator → • noptr-abstract-declarator 587 | • ptr-operator ptr-abstract-declarator-opt 592 ptr-operator → • MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 593 | • AND attribute-specifier-seq-opt 594 | • AND_AND attribute-specifier-seq-opt 595 | • nested-name-specifier MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 711 type-id → type-specifier-seq • abstract-declarator-opt 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id ELLIPSIS shift, and go to state 680 IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 OPEN_PAREN shift, and go to state 681 AND shift, and go to state 159 AND_AND shift, and go to state 162 DECLTYPE shift, and go to state 21 MULT shift, and go to state 163 ELLIPSIS [reduce using rule 32 (abstract-declarator-opt)] OPEN_PAREN [reduce using rule 32 (abstract-declarator-opt)] OPEN_PAREN [reduce using rule 485 (noptr-abstract-declarator-opt)] OPEN_SQUARE reduce using rule 485 (noptr-abstract-declarator-opt) $default reduce using rule 32 (abstract-declarator-opt) abstract-declarator go to state 682 abstract-declarator-opt go to state 683 abstract-pack-declarator go to state 684 class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 noptr-abstract-declarator go to state 685 noptr-abstract-declarator-opt go to state 686 noptr-abstract-pack-declarator go to state 687 ptr-abstract-declarator go to state 688 ptr-operator go to state 689 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
120 braced-init-list → • OPEN_BRACE initializer-list COMMA-opt CLOSE_BRACE 121 | • OPEN_BRACE designated-initializer-list COMMA-opt CLOSE_BRACE 122 | • OPEN_BRACE CLOSE_BRACE 563 postfix-expression → typename-specifier • OPEN_PAREN expression-list-opt CLOSE_PAREN 565 | typename-specifier • braced-init-list 726 type-specifier → typename-specifier • [COMMA, CONSTEXPR, ELLIPSIS, EXTERN, IDENTIFIER, INLINE, SCOPE, TYPENAME, VIRTUAL, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, OPEN_SQUARE, CLASS, STRUCT, UNION, AND_AND, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, GREATER, EXPLICIT, MULT, COMPL, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] OPEN_PAREN shift, and go to state 578 OPEN_BRACE shift, and go to state 378 OPEN_PAREN [reduce using rule 726 (type-specifier)] $default reduce using rule 726 (type-specifier) braced-init-list go to state 579
555 placeholder-type-specifier → type-constraint-opt DECLTYPE OPEN_PAREN • AUTO CLOSE_PAREN AUTO shift, and go to state 690
271 export-declaration → EXPORT OPEN_BRACE declaration-seq-opt CLOSE_BRACE • $default reduce using rule 271 (export-declaration)
390 linkage-specification → EXTERN string-literal OPEN_BRACE declaration-seq-opt • CLOSE_BRACE CLOSE_BRACE shift, and go to state 691
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, EXTERN, IDENTIFIER, INLINE, SCOPE, THIS, TYPENAME, VIRTUAL, ALIGNAS, OPEN_SQUARE, CLASS, STRUCT, UNION, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 84 | • attribute-specifier-seq 137 class-name → • IDENTIFIER 138 | • simple-template-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 543 parameter-declaration → • attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 544 | • attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator EQ initializer-clause 545 | • attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 546 | • attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt EQ initializer-clause 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 691 template-head → • TEMPLATE LESS template-parameter-list GREATER requires-clause-opt 691 | TEMPLATE LESS • template-parameter-list GREATER requires-clause-opt 695 template-name → • IDENTIFIER 696 template-parameter → • type-parameter 697 | • parameter-declaration 698 template-parameter-list → • template-parameter 699 | • template-parameter-list COMMA template-parameter 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 715 type-parameter → • type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 716 | • type-parameter-key IDENTIFIER-opt EQ type-id 717 | • type-constraint ELLIPSIS-opt IDENTIFIER-opt 718 | • type-constraint IDENTIFIER-opt EQ type-id 719 | • template-head type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 720 | • template-head type-parameter-key IDENTIFIER-opt EQ id-expression 721 type-parameter-key → • CLASS 722 | • TYPENAME 730 typedef-name → • IDENTIFIER 731 | • simple-template-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 TEMPLATE shift, and go to state 215 TYPENAME shift, and go to state 216 CLASS shift, and go to state 217 DECLTYPE shift, and go to state 21 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] CLASS [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 219 class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 132 nested-name-specifier-opt go to state 220 parameter-declaration go to state 221 simple-template-id go to state 96 template-head go to state 222 template-name go to state 102 template-parameter go to state 223 template-parameter-list go to state 224 type-constraint go to state 225 type-name go to state 106 type-parameter go to state 226 type-parameter-key go to state 227 typedef-name go to state 108
265 explicit-specialization → TEMPLATE LESS GREATER declaration • $default reduce using rule 265 (explicit-specialization)
24 THIS-opt → THIS • $default reduce using rule 24 (THIS-opt)
131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 543 parameter-declaration → attribute-specifier-seq-opt THIS-opt • decl-specifier-seq declarator 544 | attribute-specifier-seq-opt THIS-opt • decl-specifier-seq declarator EQ initializer-clause 545 | attribute-specifier-seq-opt THIS-opt • decl-specifier-seq abstract-declarator-opt 546 | attribute-specifier-seq-opt THIS-opt • decl-specifier-seq abstract-declarator-opt EQ initializer-clause 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id CONSTEXPR shift, and go to state 1 EXTERN shift, and go to state 149 IDENTIFIER shift, and go to state 4 INLINE shift, and go to state 150 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] $default reduce using rule 709 (type-constraint-opt) class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 692 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 153 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109
5 ELLIPSIS-opt → • %empty [COMMA, IDENTIFIER, GREATER] 6 | • ELLIPSIS 11 IDENTIFIER-opt → • %empty [EQ] 12 | • IDENTIFIER 719 type-parameter → template-head type-parameter-key • ELLIPSIS-opt IDENTIFIER-opt 720 | template-head type-parameter-key • IDENTIFIER-opt EQ id-expression ELLIPSIS shift, and go to state 155 IDENTIFIER shift, and go to state 425 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] EQ reduce using rule 11 (IDENTIFIER-opt) $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 693 IDENTIFIER-opt go to state 694
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, EXTERN, IDENTIFIER, INLINE, SCOPE, THIS, TYPENAME, VIRTUAL, ALIGNAS, OPEN_SQUARE, CLASS, STRUCT, UNION, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 84 | • attribute-specifier-seq 137 class-name → • IDENTIFIER 138 | • simple-template-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 543 parameter-declaration → • attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 544 | • attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator EQ initializer-clause 545 | • attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 546 | • attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt EQ initializer-clause 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 691 template-head → • TEMPLATE LESS template-parameter-list GREATER requires-clause-opt 695 template-name → • IDENTIFIER 696 template-parameter → • type-parameter 697 | • parameter-declaration 699 template-parameter-list → template-parameter-list COMMA • template-parameter 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 715 type-parameter → • type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 716 | • type-parameter-key IDENTIFIER-opt EQ type-id 717 | • type-constraint ELLIPSIS-opt IDENTIFIER-opt 718 | • type-constraint IDENTIFIER-opt EQ type-id 719 | • template-head type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 720 | • template-head type-parameter-key IDENTIFIER-opt EQ id-expression 721 type-parameter-key → • CLASS 722 | • TYPENAME 730 typedef-name → • IDENTIFIER 731 | • simple-template-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 TEMPLATE shift, and go to state 215 TYPENAME shift, and go to state 216 CLASS shift, and go to state 217 DECLTYPE shift, and go to state 21 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] CLASS [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 219 class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 132 nested-name-specifier-opt go to state 220 parameter-declaration go to state 221 simple-template-id go to state 96 template-head go to state 222 template-name go to state 102 template-parameter go to state 695 type-constraint go to state 225 type-name go to state 106 type-parameter go to state 226 type-parameter-key go to state 227 typedef-name go to state 108
620 requires-clause → • REQUIRES constraint-logical-or-expression 621 requires-clause-opt → • %empty [CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, USING, SEMICOLON, ALIGNAS, OPEN_PAREN, AND, ASM, OPEN_SQUARE, CLASS, STRUCT, UNION, CONCEPT, AND_AND, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, MULT, IMPORT, NAMESPACE, COMPL, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE] 622 | • requires-clause 691 template-head → TEMPLATE LESS template-parameter-list GREATER • requires-clause-opt REQUIRES shift, and go to state 379 $default reduce using rule 621 (requires-clause-opt) requires-clause go to state 696 requires-clause-opt go to state 697
12 IDENTIFIER-opt → IDENTIFIER • $default reduce using rule 12 (IDENTIFIER-opt)
11 IDENTIFIER-opt → • %empty [COMMA, GREATER] 12 | • IDENTIFIER 717 type-parameter → type-constraint ELLIPSIS-opt • IDENTIFIER-opt IDENTIFIER shift, and go to state 425 $default reduce using rule 11 (IDENTIFIER-opt) IDENTIFIER-opt go to state 698
718 type-parameter → type-constraint IDENTIFIER-opt • EQ type-id EQ shift, and go to state 699
11 IDENTIFIER-opt → • %empty [COMMA, GREATER] 12 | • IDENTIFIER 715 type-parameter → type-parameter-key ELLIPSIS-opt • IDENTIFIER-opt IDENTIFIER shift, and go to state 425 $default reduce using rule 11 (IDENTIFIER-opt) IDENTIFIER-opt go to state 700
716 type-parameter → type-parameter-key IDENTIFIER-opt • EQ type-id EQ shift, and go to state 701
457 nested-name-specifier → nested-name-specifier TEMPLATE-opt simple-template-id • SCOPE 733 typename-specifier → TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id • [COMMA, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, PLUS, MINUS, USING, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, ASM, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, OPEN_SQUARE, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, CLASS, STRUCT, UNION, FINAL, SPACESHIP, CONCEPT, QUERY, AND_AND, OR_OR, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, DOT, ENUM, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, EXPLICIT, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR, TRY, IMPORT, NAMESPACE, REQUIRES, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE, OVERRIDE] SCOPE shift, and go to state 671 SCOPE [reduce using rule 733 (typename-specifier)] $default reduce using rule 733 (typename-specifier)
44 alias-declaration → USING IDENTIFIER attribute-specifier-seq-opt EQ • defining-type-id SEMICOLON 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 175 cv-qualifier → • CONST 176 | • VOLATILE 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 216 defining-type-id → • defining-type-specifier-seq abstract-declarator-opt 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 220 defining-type-specifier-seq → • defining-type-specifier attribute-specifier-seq-opt 221 | • defining-type-specifier defining-type-specifier-seq 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] $default reduce using rule 709 (type-constraint-opt) class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decltype-specifier go to state 63 defining-type-id go to state 702 defining-type-specifier go to state 703 defining-type-specifier-seq go to state 704 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 153 enum-name go to state 71 enum-specifier go to state 72 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109
456 nested-name-specifier → nested-name-specifier IDENTIFIER • SCOPE 695 template-name → IDENTIFIER • [LESS] 754 unqualified-id → IDENTIFIER • [COMMA, ELLIPSIS, SEMICOLON] SCOPE shift, and go to state 398 LESS reduce using rule 695 (template-name) $default reduce using rule 754 (unqualified-id)
692 template-id → simple-template-id • $default reduce using rule 692 (template-id)
763 using-declarator → TYPENAME-opt nested-name-specifier unqualified-id • $default reduce using rule 763 (using-declarator)
5 ELLIPSIS-opt → • %empty [COMMA, SEMICOLON] 6 | • ELLIPSIS 765 using-declarator-list → using-declarator-list COMMA using-declarator • ELLIPSIS-opt ELLIPSIS shift, and go to state 155 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 705
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 277 expression → • assignment-expression 278 | • expression COMMA assignment-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 477 | NOEXCEPT OPEN_PAREN • expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 706 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
286 fold-expression → OPEN_PAREN ELLIPSIS • fold-operator cast-expression CLOSE_PAREN 288 fold-operator → • PLUS 289 | • MINUS 290 | • MULT 291 | • DIV 292 | • MOD 293 | • XOR 294 | • AND 295 | • OR 296 | • LSHIFT 297 | • RSHIFT 298 | • PLUS_EQ 299 | • MINUS_EQ 300 | • MULT_EQ 301 | • DIV_EQ 302 | • MOD_EQ 303 | • XOR_EQ 304 | • AND_EQ 305 | • OR_EQ 306 | • LSHIFT_EQ 307 | • RSHIFT_EQ 308 | • EQ 309 | • EQ_EQ 310 | • NOT_EQ 311 | • LESS 312 | • GREATER 313 | • LESS_EQ 314 | • GREATER_EQ 315 | • AND_AND 316 | • OR_OR 317 | • COMMA 318 | • DOT_STAR 319 | • DEREF_STAR COMMA shift, and go to state 707 PLUS shift, and go to state 708 MINUS shift, and go to state 709 EQ shift, and go to state 710 AND shift, and go to state 711 MULT_EQ shift, and go to state 712 DIV_EQ shift, and go to state 713 MOD_EQ shift, and go to state 714 PLUS_EQ shift, and go to state 715 MINUS_EQ shift, and go to state 716 RSHIFT_EQ shift, and go to state 717 LSHIFT_EQ shift, and go to state 718 AND_EQ shift, and go to state 719 XOR_EQ shift, and go to state 720 OR_EQ shift, and go to state 721 AND_AND shift, and go to state 722 OR_OR shift, and go to state 723 EQ_EQ shift, and go to state 724 NOT_EQ shift, and go to state 725 XOR shift, and go to state 726 LESS shift, and go to state 727 GREATER shift, and go to state 728 MULT shift, and go to state 729 DIV shift, and go to state 730 MOD shift, and go to state 731 OR shift, and go to state 732 LSHIFT shift, and go to state 733 RSHIFT shift, and go to state 734 LESS_EQ shift, and go to state 735 GREATER_EQ shift, and go to state 736 DOT_STAR shift, and go to state 737 DEREF_STAR shift, and go to state 738 fold-operator go to state 739
285 fold-expression → OPEN_PAREN cast-expression • fold-operator ELLIPSIS CLOSE_PAREN 287 | OPEN_PAREN cast-expression • fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 288 fold-operator → • PLUS 289 | • MINUS 290 | • MULT 291 | • DIV 292 | • MOD 293 | • XOR 294 | • AND 295 | • OR 296 | • LSHIFT 297 | • RSHIFT 298 | • PLUS_EQ 299 | • MINUS_EQ 300 | • MULT_EQ 301 | • DIV_EQ 302 | • MOD_EQ 303 | • XOR_EQ 304 | • AND_EQ 305 | • OR_EQ 306 | • LSHIFT_EQ 307 | • RSHIFT_EQ 308 | • EQ 309 | • EQ_EQ 310 | • NOT_EQ 311 | • LESS 312 | • GREATER 313 | • LESS_EQ 314 | • GREATER_EQ 315 | • AND_AND 316 | • OR_OR 317 | • COMMA 318 | • DOT_STAR 319 | • DEREF_STAR 556 pm-expression → cast-expression • [COMMA, PLUS, MINUS, EQ, CLOSE_PAREN, AND, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, SPACESHIP, QUERY, AND_AND, OR_OR, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR] COMMA shift, and go to state 707 PLUS shift, and go to state 708 MINUS shift, and go to state 709 EQ shift, and go to state 710 AND shift, and go to state 711 MULT_EQ shift, and go to state 712 DIV_EQ shift, and go to state 713 MOD_EQ shift, and go to state 714 PLUS_EQ shift, and go to state 715 MINUS_EQ shift, and go to state 716 RSHIFT_EQ shift, and go to state 717 LSHIFT_EQ shift, and go to state 718 AND_EQ shift, and go to state 719 XOR_EQ shift, and go to state 720 OR_EQ shift, and go to state 721 AND_AND shift, and go to state 722 OR_OR shift, and go to state 723 EQ_EQ shift, and go to state 724 NOT_EQ shift, and go to state 725 XOR shift, and go to state 726 LESS shift, and go to state 727 GREATER shift, and go to state 728 MULT shift, and go to state 729 DIV shift, and go to state 730 MOD shift, and go to state 731 OR shift, and go to state 732 LSHIFT shift, and go to state 733 RSHIFT shift, and go to state 734 LESS_EQ shift, and go to state 735 GREATER_EQ shift, and go to state 736 DOT_STAR shift, and go to state 737 DEREF_STAR shift, and go to state 738 COMMA [reduce using rule 556 (pm-expression)] PLUS [reduce using rule 556 (pm-expression)] MINUS [reduce using rule 556 (pm-expression)] EQ [reduce using rule 556 (pm-expression)] AND [reduce using rule 556 (pm-expression)] MULT_EQ [reduce using rule 556 (pm-expression)] DIV_EQ [reduce using rule 556 (pm-expression)] MOD_EQ [reduce using rule 556 (pm-expression)] PLUS_EQ [reduce using rule 556 (pm-expression)] MINUS_EQ [reduce using rule 556 (pm-expression)] RSHIFT_EQ [reduce using rule 556 (pm-expression)] LSHIFT_EQ [reduce using rule 556 (pm-expression)] AND_EQ [reduce using rule 556 (pm-expression)] XOR_EQ [reduce using rule 556 (pm-expression)] OR_EQ [reduce using rule 556 (pm-expression)] AND_AND [reduce using rule 556 (pm-expression)] OR_OR [reduce using rule 556 (pm-expression)] EQ_EQ [reduce using rule 556 (pm-expression)] NOT_EQ [reduce using rule 556 (pm-expression)] XOR [reduce using rule 556 (pm-expression)] LESS [reduce using rule 556 (pm-expression)] GREATER [reduce using rule 556 (pm-expression)] MULT [reduce using rule 556 (pm-expression)] DIV [reduce using rule 556 (pm-expression)] MOD [reduce using rule 556 (pm-expression)] OR [reduce using rule 556 (pm-expression)] LSHIFT [reduce using rule 556 (pm-expression)] RSHIFT [reduce using rule 556 (pm-expression)] LESS_EQ [reduce using rule 556 (pm-expression)] GREATER_EQ [reduce using rule 556 (pm-expression)] DOT_STAR [reduce using rule 556 (pm-expression)] DEREF_STAR [reduce using rule 556 (pm-expression)] $default reduce using rule 556 (pm-expression) fold-operator go to state 740
278 expression → expression • COMMA assignment-expression 578 primary-expression → OPEN_PAREN expression • CLOSE_PAREN COMMA shift, and go to state 532 CLOSE_PAREN shift, and go to state 741
130 cast-expression → OPEN_PAREN type-id • CLOSE_PAREN cast-expression CLOSE_PAREN shift, and go to state 742
5 ELLIPSIS-opt → • %empty [COMMA, CLOSE_SQUARE] 6 | • ELLIPSIS 635 simple-capture → IDENTIFIER • ELLIPSIS-opt ELLIPSIS shift, and go to state 155 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 743
637 simple-capture → THIS • $default reduce using rule 637 (simple-capture)
126 capture-default → EQ • $default reduce using rule 126 (capture-default)
5 ELLIPSIS-opt → • %empty [IDENTIFIER] 6 | • ELLIPSIS 125 capture-default → AND • [COMMA, CLOSE_SQUARE] 347 init-capture → AND • ELLIPSIS-opt IDENTIFIER initializer 636 simple-capture → AND • IDENTIFIER ELLIPSIS-opt ELLIPSIS shift, and go to state 155 IDENTIFIER shift, and go to state 744 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 125 (capture-default) ELLIPSIS-opt go to state 745
638 simple-capture → MULT • THIS THIS shift, and go to state 746
346 init-capture → ELLIPSIS-opt • IDENTIFIER initializer IDENTIFIER shift, and go to state 747
127 capture-list → capture • $default reduce using rule 127 (capture-list)
379 lambda-capture → capture-default • [CLOSE_SQUARE] 381 | capture-default • COMMA capture-list COMMA shift, and go to state 748 $default reduce using rule 379 (lambda-capture)
128 capture-list → capture-list • COMMA capture 380 lambda-capture → capture-list • [CLOSE_SQUARE] COMMA shift, and go to state 749 $default reduce using rule 380 (lambda-capture)
124 capture → init-capture • $default reduce using rule 124 (capture)
383 lambda-capture-opt → lambda-capture • $default reduce using rule 383 (lambda-capture-opt)
388 lambda-introducer → OPEN_SQUARE lambda-capture-opt • CLOSE_SQUARE CLOSE_SQUARE shift, and go to state 750
123 capture → simple-capture • $default reduce using rule 123 (capture)
90 await-expression → CO_AWAIT cast-expression • $default reduce using rule 90 (await-expression)
542 overloadable-operator → COMMA • $default reduce using rule 542 (overloadable-operator)
509 overloadable-operator → NOT • $default reduce using rule 509 (overloadable-operator)
510 overloadable-operator → PLUS • $default reduce using rule 510 (overloadable-operator)
511 overloadable-operator → MINUS • $default reduce using rule 511 (overloadable-operator)
518 overloadable-operator → EQ • $default reduce using rule 518 (overloadable-operator)
504 overloadable-operator → OPEN_PAREN • CLOSE_PAREN CLOSE_PAREN shift, and go to state 751
516 overloadable-operator → AND • $default reduce using rule 516 (overloadable-operator)
521 overloadable-operator → MULT_EQ • $default reduce using rule 521 (overloadable-operator)
522 overloadable-operator → DIV_EQ • $default reduce using rule 522 (overloadable-operator)
523 overloadable-operator → MOD_EQ • $default reduce using rule 523 (overloadable-operator)
519 overloadable-operator → PLUS_EQ • $default reduce using rule 519 (overloadable-operator)
520 overloadable-operator → MINUS_EQ • $default reduce using rule 520 (overloadable-operator)
539 overloadable-operator → RSHIFT_EQ • $default reduce using rule 539 (overloadable-operator)
538 overloadable-operator → LSHIFT_EQ • $default reduce using rule 538 (overloadable-operator)
525 overloadable-operator → AND_EQ • $default reduce using rule 525 (overloadable-operator)
524 overloadable-operator → XOR_EQ • $default reduce using rule 524 (overloadable-operator)
526 overloadable-operator → OR_EQ • $default reduce using rule 526 (overloadable-operator)
505 overloadable-operator → OPEN_SQUARE • CLOSE_SQUARE CLOSE_SQUARE shift, and go to state 752
503 overloadable-operator → CO_AWAIT • $default reduce using rule 503 (overloadable-operator)
533 overloadable-operator → SPACESHIP • $default reduce using rule 533 (overloadable-operator)
534 overloadable-operator → AND_AND • $default reduce using rule 534 (overloadable-operator)
535 overloadable-operator → OR_OR • $default reduce using rule 535 (overloadable-operator)
506 overloadable-operator → DEREF • $default reduce using rule 506 (overloadable-operator)
500 overloadable-operator → DELETE • [COMMA, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, PLUS, MINUS, USING, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, ASM, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, OPEN_SQUARE, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, CLASS, STRUCT, UNION, FINAL, SPACESHIP, CONCEPT, QUERY, AND_AND, OR_OR, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, DOT, ENUM, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, EXPLICIT, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR, TRY, IMPORT, NAMESPACE, REQUIRES, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE, OVERRIDE] 502 | DELETE • OPEN_SQUARE CLOSE_SQUARE OPEN_SQUARE shift, and go to state 753 OPEN_SQUARE [reduce using rule 500 (overloadable-operator)] $default reduce using rule 500 (overloadable-operator)
527 overloadable-operator → EQ_EQ • $default reduce using rule 527 (overloadable-operator)
528 overloadable-operator → NOT_EQ • $default reduce using rule 528 (overloadable-operator)
515 overloadable-operator → XOR • $default reduce using rule 515 (overloadable-operator)
529 overloadable-operator → LESS • $default reduce using rule 529 (overloadable-operator)
530 overloadable-operator → GREATER • $default reduce using rule 530 (overloadable-operator)
512 overloadable-operator → MULT • $default reduce using rule 512 (overloadable-operator)
513 overloadable-operator → DIV • $default reduce using rule 513 (overloadable-operator)
514 overloadable-operator → MOD • $default reduce using rule 514 (overloadable-operator)
517 overloadable-operator → OR • $default reduce using rule 517 (overloadable-operator)
536 overloadable-operator → LSHIFT • $default reduce using rule 536 (overloadable-operator)
537 overloadable-operator → RSHIFT • $default reduce using rule 537 (overloadable-operator)
531 overloadable-operator → LESS_EQ • $default reduce using rule 531 (overloadable-operator)
532 overloadable-operator → GREATER_EQ • $default reduce using rule 532 (overloadable-operator)
507 overloadable-operator → DEREF_STAR • $default reduce using rule 507 (overloadable-operator)
499 overloadable-operator → NEW • [COMMA, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, PLUS, MINUS, USING, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, ASM, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, OPEN_SQUARE, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, CLASS, STRUCT, UNION, FINAL, SPACESHIP, CONCEPT, QUERY, AND_AND, OR_OR, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, DOT, ENUM, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, EXPLICIT, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR, TRY, IMPORT, NAMESPACE, REQUIRES, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE, OVERRIDE] 501 | NEW • OPEN_SQUARE CLOSE_SQUARE OPEN_SQUARE shift, and go to state 754 OPEN_SQUARE [reduce using rule 499 (overloadable-operator)] $default reduce using rule 499 (overloadable-operator)
508 overloadable-operator → COMPL • $default reduce using rule 508 (overloadable-operator)
540 overloadable-operator → PLUS_PLUS • $default reduce using rule 540 (overloadable-operator)
541 overloadable-operator → MINUS_MINUS • $default reduce using rule 541 (overloadable-operator)
169 conversion-function-id → OPERATOR conversion-type-id • $default reduce using rule 169 (conversion-function-id)
497 operator-function-id → OPERATOR overloadable-operator • [COMMA, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, PLUS, MINUS, USING, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, ASM, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, OPEN_SQUARE, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, CLASS, STRUCT, UNION, FINAL, SPACESHIP, CONCEPT, QUERY, AND_AND, OR_OR, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, DOT, ENUM, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, EXPLICIT, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR, TRY, IMPORT, NAMESPACE, REQUIRES, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE, OVERRIDE] 498 | OPERATOR overloadable-operator • LESS template-argument-list-opt GREATER LESS shift, and go to state 755 LESS [reduce using rule 497 (operator-function-id)] $default reduce using rule 497 (operator-function-id)
392 literal-operator-id → OPERATOR string-literal • IDENTIFIER 734 ud-suffix → • IDENTIFIER 761 user-defined-string-literal → string-literal • ud-suffix IDENTIFIER shift, and go to state 756 ud-suffix go to state 757
137 class-name → • IDENTIFIER 138 | • simple-template-id 166 conversion-declarator → • ptr-operator conversion-declarator-opt 167 conversion-declarator-opt → • %empty [COMMA, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, PLUS, MINUS, USING, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, ASM, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, OPEN_SQUARE, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, CLASS, STRUCT, UNION, FINAL, SPACESHIP, CONCEPT, QUERY, AND_AND, OR_OR, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, DOT, ENUM, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, EXPLICIT, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR, TRY, IMPORT, NAMESPACE, REQUIRES, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE, OVERRIDE] 168 | • conversion-declarator 170 conversion-type-id → type-specifier-seq • conversion-declarator-opt 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 592 ptr-operator → • MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 593 | • AND attribute-specifier-seq-opt 594 | • AND_AND attribute-specifier-seq-opt 595 | • nested-name-specifier MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 AND shift, and go to state 159 AND_AND shift, and go to state 162 DECLTYPE shift, and go to state 21 MULT shift, and go to state 163 IDENTIFIER [reduce using rule 167 (conversion-declarator-opt)] SCOPE [reduce using rule 167 (conversion-declarator-opt)] AND [reduce using rule 167 (conversion-declarator-opt)] AND_AND [reduce using rule 167 (conversion-declarator-opt)] DECLTYPE [reduce using rule 167 (conversion-declarator-opt)] MULT [reduce using rule 167 (conversion-declarator-opt)] $default reduce using rule 167 (conversion-declarator-opt) class-name go to state 55 conversion-declarator go to state 758 conversion-declarator-opt go to state 759 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 ptr-operator go to state 760 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
393 literal-operator-id → OPERATOR user-defined-string-literal • $default reduce using rule 393 (literal-operator-id)
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, EXTERN, IDENTIFIER, INLINE, SCOPE, THIS, TYPENAME, VIRTUAL, ALIGNAS, OPEN_SQUARE, CLASS, STRUCT, UNION, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 84 | • attribute-specifier-seq 543 parameter-declaration → • attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 544 | • attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator EQ initializer-clause 545 | • attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 546 | • attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt EQ initializer-clause 547 parameter-declaration-clause → • parameter-declaration-list-opt ELLIPSIS-opt 548 | • parameter-declaration-list COMMA ELLIPSIS 549 parameter-declaration-list → • parameter-declaration 550 | • parameter-declaration-list COMMA parameter-declaration 551 parameter-declaration-list-opt → • %empty [ELLIPSIS, CLOSE_PAREN] 552 | • parameter-declaration-list 615 requirement-parameter-list → OPEN_PAREN • parameter-declaration-clause CLOSE_PAREN ELLIPSIS reduce using rule 551 (parameter-declaration-list-opt) CLOSE_PAREN reduce using rule 551 (parameter-declaration-list-opt) $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 219 parameter-declaration go to state 617 parameter-declaration-clause go to state 761 parameter-declaration-list go to state 619 parameter-declaration-list-opt go to state 620
617 requirement-parameter-list-opt → requirement-parameter-list • $default reduce using rule 617 (requirement-parameter-list-opt)
614 requirement-body → • OPEN_BRACE requirement-seq CLOSE_BRACE 623 requires-expression → REQUIRES requirement-parameter-list-opt • requirement-body OPEN_BRACE shift, and go to state 762 requirement-body go to state 763
137 class-name → IDENTIFIER • [COMMA, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, PLUS, MINUS, USING, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, ASM, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, OPEN_SQUARE, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, CLASS, STRUCT, UNION, FINAL, SPACESHIP, CONCEPT, QUERY, AND_AND, OR_OR, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, DOT, ENUM, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, EXPLICIT, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR, TRY, IMPORT, NAMESPACE, REQUIRES, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE, OVERRIDE] 246 enum-name → IDENTIFIER • [COMMA, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, PLUS, MINUS, USING, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, ASM, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, OPEN_SQUARE, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, CLASS, STRUCT, UNION, FINAL, SPACESHIP, CONCEPT, QUERY, AND_AND, OR_OR, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, DOT, ENUM, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, EXPLICIT, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR, TRY, IMPORT, NAMESPACE, REQUIRES, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE, OVERRIDE] 695 template-name → IDENTIFIER • [LESS] 730 typedef-name → IDENTIFIER • [COMMA, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, PLUS, MINUS, USING, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, ASM, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, OPEN_SQUARE, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, CLASS, STRUCT, UNION, FINAL, SPACESHIP, CONCEPT, QUERY, AND_AND, OR_OR, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, DOT, ENUM, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, EXPLICIT, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR, TRY, IMPORT, NAMESPACE, REQUIRES, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE, OVERRIDE] COMMA reduce using rule 137 (class-name) COMMA [reduce using rule 246 (enum-name)] COMMA [reduce using rule 730 (typedef-name)] CONSTEXPR reduce using rule 137 (class-name) CONSTEXPR [reduce using rule 246 (enum-name)] CONSTEXPR [reduce using rule 730 (typedef-name)] ELLIPSIS reduce using rule 137 (class-name) ELLIPSIS [reduce using rule 246 (enum-name)] ELLIPSIS [reduce using rule 730 (typedef-name)] EXPORT reduce using rule 137 (class-name) EXPORT [reduce using rule 246 (enum-name)] EXPORT [reduce using rule 730 (typedef-name)] EXTERN reduce using rule 137 (class-name) EXTERN [reduce using rule 246 (enum-name)] EXTERN [reduce using rule 730 (typedef-name)] IDENTIFIER reduce using rule 137 (class-name) IDENTIFIER [reduce using rule 246 (enum-name)] IDENTIFIER [reduce using rule 730 (typedef-name)] INLINE reduce using rule 137 (class-name) INLINE [reduce using rule 246 (enum-name)] INLINE [reduce using rule 730 (typedef-name)] NOEXCEPT reduce using rule 137 (class-name) NOEXCEPT [reduce using rule 246 (enum-name)] NOEXCEPT [reduce using rule 730 (typedef-name)] SCOPE reduce using rule 137 (class-name) SCOPE [reduce using rule 246 (enum-name)] SCOPE [reduce using rule 730 (typedef-name)] TEMPLATE reduce using rule 137 (class-name) TEMPLATE [reduce using rule 246 (enum-name)] TEMPLATE [reduce using rule 730 (typedef-name)] TYPENAME reduce using rule 137 (class-name) TYPENAME [reduce using rule 246 (enum-name)] TYPENAME [reduce using rule 730 (typedef-name)] VIRTUAL reduce using rule 137 (class-name) VIRTUAL [reduce using rule 246 (enum-name)] VIRTUAL [reduce using rule 730 (typedef-name)] PLUS reduce using rule 137 (class-name) PLUS [reduce using rule 246 (enum-name)] PLUS [reduce using rule 730 (typedef-name)] MINUS reduce using rule 137 (class-name) MINUS [reduce using rule 246 (enum-name)] MINUS [reduce using rule 730 (typedef-name)] USING reduce using rule 137 (class-name) USING [reduce using rule 246 (enum-name)] USING [reduce using rule 730 (typedef-name)] EQ reduce using rule 137 (class-name) EQ [reduce using rule 246 (enum-name)] EQ [reduce using rule 730 (typedef-name)] SEMICOLON reduce using rule 137 (class-name) SEMICOLON [reduce using rule 246 (enum-name)] SEMICOLON [reduce using rule 730 (typedef-name)] ALIGNAS reduce using rule 137 (class-name) ALIGNAS [reduce using rule 246 (enum-name)] ALIGNAS [reduce using rule 730 (typedef-name)] OPEN_PAREN reduce using rule 137 (class-name) OPEN_PAREN [reduce using rule 246 (enum-name)] OPEN_PAREN [reduce using rule 730 (typedef-name)] CLOSE_PAREN reduce using rule 137 (class-name) CLOSE_PAREN [reduce using rule 246 (enum-name)] CLOSE_PAREN [reduce using rule 730 (typedef-name)] AND reduce using rule 137 (class-name) AND [reduce using rule 246 (enum-name)] AND [reduce using rule 730 (typedef-name)] ASM reduce using rule 137 (class-name) ASM [reduce using rule 246 (enum-name)] ASM [reduce using rule 730 (typedef-name)] MULT_EQ reduce using rule 137 (class-name) MULT_EQ [reduce using rule 246 (enum-name)] MULT_EQ [reduce using rule 730 (typedef-name)] DIV_EQ reduce using rule 137 (class-name) DIV_EQ [reduce using rule 246 (enum-name)] DIV_EQ [reduce using rule 730 (typedef-name)] MOD_EQ reduce using rule 137 (class-name) MOD_EQ [reduce using rule 246 (enum-name)] MOD_EQ [reduce using rule 730 (typedef-name)] PLUS_EQ reduce using rule 137 (class-name) PLUS_EQ [reduce using rule 246 (enum-name)] PLUS_EQ [reduce using rule 730 (typedef-name)] MINUS_EQ reduce using rule 137 (class-name) MINUS_EQ [reduce using rule 246 (enum-name)] MINUS_EQ [reduce using rule 730 (typedef-name)] RSHIFT_EQ reduce using rule 137 (class-name) RSHIFT_EQ [reduce using rule 246 (enum-name)] RSHIFT_EQ [reduce using rule 730 (typedef-name)] LSHIFT_EQ reduce using rule 137 (class-name) LSHIFT_EQ [reduce using rule 246 (enum-name)] LSHIFT_EQ [reduce using rule 730 (typedef-name)] AND_EQ reduce using rule 137 (class-name) AND_EQ [reduce using rule 246 (enum-name)] AND_EQ [reduce using rule 730 (typedef-name)] XOR_EQ reduce using rule 137 (class-name) XOR_EQ [reduce using rule 246 (enum-name)] XOR_EQ [reduce using rule 730 (typedef-name)] OR_EQ reduce using rule 137 (class-name) OR_EQ [reduce using rule 246 (enum-name)] OR_EQ [reduce using rule 730 (typedef-name)] OPEN_SQUARE reduce using rule 137 (class-name) OPEN_SQUARE [reduce using rule 246 (enum-name)] OPEN_SQUARE [reduce using rule 730 (typedef-name)] CLOSE_SQUARE reduce using rule 137 (class-name) CLOSE_SQUARE [reduce using rule 246 (enum-name)] CLOSE_SQUARE [reduce using rule 730 (typedef-name)] COLON reduce using rule 137 (class-name) COLON [reduce using rule 246 (enum-name)] COLON [reduce using rule 730 (typedef-name)] OPEN_BRACE reduce using rule 137 (class-name) OPEN_BRACE [reduce using rule 246 (enum-name)] OPEN_BRACE [reduce using rule 730 (typedef-name)] CLOSE_BRACE reduce using rule 137 (class-name) CLOSE_BRACE [reduce using rule 246 (enum-name)] CLOSE_BRACE [reduce using rule 730 (typedef-name)] CLASS reduce using rule 137 (class-name) CLASS [reduce using rule 246 (enum-name)] CLASS [reduce using rule 730 (typedef-name)] STRUCT reduce using rule 137 (class-name) STRUCT [reduce using rule 246 (enum-name)] STRUCT [reduce using rule 730 (typedef-name)] UNION reduce using rule 137 (class-name) UNION [reduce using rule 246 (enum-name)] UNION [reduce using rule 730 (typedef-name)] FINAL reduce using rule 137 (class-name) FINAL [reduce using rule 246 (enum-name)] FINAL [reduce using rule 730 (typedef-name)] SPACESHIP reduce using rule 137 (class-name) SPACESHIP [reduce using rule 246 (enum-name)] SPACESHIP [reduce using rule 730 (typedef-name)] CONCEPT reduce using rule 137 (class-name) CONCEPT [reduce using rule 246 (enum-name)] CONCEPT [reduce using rule 730 (typedef-name)] QUERY reduce using rule 137 (class-name) QUERY [reduce using rule 246 (enum-name)] QUERY [reduce using rule 730 (typedef-name)] AND_AND reduce using rule 137 (class-name) AND_AND [reduce using rule 246 (enum-name)] AND_AND [reduce using rule 730 (typedef-name)] OR_OR reduce using rule 137 (class-name) OR_OR [reduce using rule 246 (enum-name)] OR_OR [reduce using rule 730 (typedef-name)] OPERATOR reduce using rule 137 (class-name) OPERATOR [reduce using rule 246 (enum-name)] OPERATOR [reduce using rule 730 (typedef-name)] CONST reduce using rule 137 (class-name) CONST [reduce using rule 246 (enum-name)] CONST [reduce using rule 730 (typedef-name)] VOLATILE reduce using rule 137 (class-name) VOLATILE [reduce using rule 246 (enum-name)] VOLATILE [reduce using rule 730 (typedef-name)] FRIEND reduce using rule 137 (class-name) FRIEND [reduce using rule 246 (enum-name)] FRIEND [reduce using rule 730 (typedef-name)] TYPEDEF reduce using rule 137 (class-name) TYPEDEF [reduce using rule 246 (enum-name)] TYPEDEF [reduce using rule 730 (typedef-name)] CONSTEVAL reduce using rule 137 (class-name) CONSTEVAL [reduce using rule 246 (enum-name)] CONSTEVAL [reduce using rule 730 (typedef-name)] CONSTINIT reduce using rule 137 (class-name) CONSTINIT [reduce using rule 246 (enum-name)] CONSTINIT [reduce using rule 730 (typedef-name)] DECLTYPE reduce using rule 137 (class-name) DECLTYPE [reduce using rule 246 (enum-name)] DECLTYPE [reduce using rule 730 (typedef-name)] DEREF reduce using rule 137 (class-name) DEREF [reduce using rule 246 (enum-name)] DEREF [reduce using rule 730 (typedef-name)] DOT reduce using rule 137 (class-name) DOT [reduce using rule 246 (enum-name)] DOT [reduce using rule 730 (typedef-name)] ENUM reduce using rule 137 (class-name) ENUM [reduce using rule 246 (enum-name)] ENUM [reduce using rule 730 (typedef-name)] EQ_EQ reduce using rule 137 (class-name) EQ_EQ [reduce using rule 246 (enum-name)] EQ_EQ [reduce using rule 730 (typedef-name)] NOT_EQ reduce using rule 137 (class-name) NOT_EQ [reduce using rule 246 (enum-name)] NOT_EQ [reduce using rule 730 (typedef-name)] XOR reduce using rule 137 (class-name) XOR [reduce using rule 246 (enum-name)] XOR [reduce using rule 730 (typedef-name)] LESS reduce using rule 137 (class-name) LESS [reduce using rule 246 (enum-name)] LESS [reduce using rule 695 (template-name)] LESS [reduce using rule 730 (typedef-name)] GREATER reduce using rule 137 (class-name) GREATER [reduce using rule 246 (enum-name)] GREATER [reduce using rule 730 (typedef-name)] EXPLICIT reduce using rule 137 (class-name) EXPLICIT [reduce using rule 246 (enum-name)] EXPLICIT [reduce using rule 730 (typedef-name)] MULT reduce using rule 137 (class-name) MULT [reduce using rule 246 (enum-name)] MULT [reduce using rule 730 (typedef-name)] DIV reduce using rule 137 (class-name) DIV [reduce using rule 246 (enum-name)] DIV [reduce using rule 730 (typedef-name)] MOD reduce using rule 137 (class-name) MOD [reduce using rule 246 (enum-name)] MOD [reduce using rule 730 (typedef-name)] OR reduce using rule 137 (class-name) OR [reduce using rule 246 (enum-name)] OR [reduce using rule 730 (typedef-name)] LSHIFT reduce using rule 137 (class-name) LSHIFT [reduce using rule 246 (enum-name)] LSHIFT [reduce using rule 730 (typedef-name)] RSHIFT reduce using rule 137 (class-name) RSHIFT [reduce using rule 246 (enum-name)] RSHIFT [reduce using rule 730 (typedef-name)] LESS_EQ reduce using rule 137 (class-name) LESS_EQ [reduce using rule 246 (enum-name)] LESS_EQ [reduce using rule 730 (typedef-name)] GREATER_EQ reduce using rule 137 (class-name) GREATER_EQ [reduce using rule 246 (enum-name)] GREATER_EQ [reduce using rule 730 (typedef-name)] DOT_STAR reduce using rule 137 (class-name) DOT_STAR [reduce using rule 246 (enum-name)] DOT_STAR [reduce using rule 730 (typedef-name)] DEREF_STAR reduce using rule 137 (class-name) DEREF_STAR [reduce using rule 246 (enum-name)] DEREF_STAR [reduce using rule 730 (typedef-name)] TRY reduce using rule 137 (class-name) TRY [reduce using rule 246 (enum-name)] TRY [reduce using rule 730 (typedef-name)] IMPORT reduce using rule 137 (class-name) IMPORT [reduce using rule 246 (enum-name)] IMPORT [reduce using rule 730 (typedef-name)] NAMESPACE reduce using rule 137 (class-name) NAMESPACE [reduce using rule 246 (enum-name)] NAMESPACE [reduce using rule 730 (typedef-name)] REQUIRES reduce using rule 137 (class-name) REQUIRES [reduce using rule 246 (enum-name)] REQUIRES [reduce using rule 730 (typedef-name)] COMPL reduce using rule 137 (class-name) COMPL [reduce using rule 246 (enum-name)] COMPL [reduce using rule 730 (typedef-name)] PLUS_PLUS reduce using rule 137 (class-name) PLUS_PLUS [reduce using rule 246 (enum-name)] PLUS_PLUS [reduce using rule 730 (typedef-name)] MINUS_MINUS reduce using rule 137 (class-name) MINUS_MINUS [reduce using rule 246 (enum-name)] MINUS_MINUS [reduce using rule 730 (typedef-name)] AUTO reduce using rule 137 (class-name) AUTO [reduce using rule 246 (enum-name)] AUTO [reduce using rule 730 (typedef-name)] CHAR reduce using rule 137 (class-name) CHAR [reduce using rule 246 (enum-name)] CHAR [reduce using rule 730 (typedef-name)] CHAR8_T reduce using rule 137 (class-name) CHAR8_T [reduce using rule 246 (enum-name)] CHAR8_T [reduce using rule 730 (typedef-name)] CHAR16_T reduce using rule 137 (class-name) CHAR16_T [reduce using rule 246 (enum-name)] CHAR16_T [reduce using rule 730 (typedef-name)] CHAR32_T reduce using rule 137 (class-name) CHAR32_T [reduce using rule 246 (enum-name)] CHAR32_T [reduce using rule 730 (typedef-name)] WCHAR_T reduce using rule 137 (class-name) WCHAR_T [reduce using rule 246 (enum-name)] WCHAR_T [reduce using rule 730 (typedef-name)] BOOL reduce using rule 137 (class-name) BOOL [reduce using rule 246 (enum-name)] BOOL [reduce using rule 730 (typedef-name)] SHORT reduce using rule 137 (class-name) SHORT [reduce using rule 246 (enum-name)] SHORT [reduce using rule 730 (typedef-name)] INT reduce using rule 137 (class-name) INT [reduce using rule 246 (enum-name)] INT [reduce using rule 730 (typedef-name)] LONG reduce using rule 137 (class-name) LONG [reduce using rule 246 (enum-name)] LONG [reduce using rule 730 (typedef-name)] SIGNED reduce using rule 137 (class-name) SIGNED [reduce using rule 246 (enum-name)] SIGNED [reduce using rule 730 (typedef-name)] UNSIGNED reduce using rule 137 (class-name) UNSIGNED [reduce using rule 246 (enum-name)] UNSIGNED [reduce using rule 730 (typedef-name)] FLOAT reduce using rule 137 (class-name) FLOAT [reduce using rule 246 (enum-name)] FLOAT [reduce using rule 730 (typedef-name)] DOUBLE reduce using rule 137 (class-name) DOUBLE [reduce using rule 246 (enum-name)] DOUBLE [reduce using rule 730 (typedef-name)] VOID reduce using rule 137 (class-name) VOID [reduce using rule 246 (enum-name)] VOID [reduce using rule 730 (typedef-name)] STATIC_ASSERT reduce using rule 137 (class-name) STATIC_ASSERT [reduce using rule 246 (enum-name)] STATIC_ASSERT [reduce using rule 730 (typedef-name)] STATIC reduce using rule 137 (class-name) STATIC [reduce using rule 246 (enum-name)] STATIC [reduce using rule 730 (typedef-name)] THREAD_LOCAL reduce using rule 137 (class-name) THREAD_LOCAL [reduce using rule 246 (enum-name)] THREAD_LOCAL [reduce using rule 730 (typedef-name)] MUTABLE reduce using rule 137 (class-name) MUTABLE [reduce using rule 246 (enum-name)] MUTABLE [reduce using rule 730 (typedef-name)] OVERRIDE reduce using rule 137 (class-name) OVERRIDE [reduce using rule 246 (enum-name)] OVERRIDE [reduce using rule 730 (typedef-name)] $default reduce using rule 137 (class-name)
759 unqualified-id → COMPL decltype-specifier • $default reduce using rule 759 (unqualified-id)
758 unqualified-id → COMPL type-name • $default reduce using rule 758 (unqualified-id)
737 unary-expression → PLUS_PLUS cast-expression • $default reduce using rule 737 (unary-expression)
738 unary-expression → MINUS_MINUS cast-expression • $default reduce using rule 738 (unary-expression)
134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 175 cv-qualifier → • CONST 176 | • VOLATILE 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 570 postfix-expression → DYNAMIC_CAST LESS • type-id GREATER OPEN_PAREN expression CLOSE_PAREN 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 711 type-id → • type-specifier-seq abstract-declarator-opt 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 728 type-specifier-seq → • type-specifier attribute-specifier-seq-opt 729 | • type-specifier type-specifier-seq 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 124 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] $default reduce using rule 709 (type-constraint-opt) class-key go to state 404 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 764 type-name go to state 106 type-specifier go to state 412 type-specifier-seq go to state 413 typedef-name go to state 108 typename-specifier go to state 109
134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 175 cv-qualifier → • CONST 176 | • VOLATILE 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 571 postfix-expression → STATIC_CAST LESS • type-id GREATER OPEN_PAREN expression CLOSE_PAREN 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 711 type-id → • type-specifier-seq abstract-declarator-opt 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 728 type-specifier-seq → • type-specifier attribute-specifier-seq-opt 729 | • type-specifier type-specifier-seq 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 124 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] $default reduce using rule 709 (type-constraint-opt) class-key go to state 404 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 765 type-name go to state 106 type-specifier go to state 412 type-specifier-seq go to state 413 typedef-name go to state 108 typename-specifier go to state 109
134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 175 cv-qualifier → • CONST 176 | • VOLATILE 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 572 postfix-expression → REINTERPRET_CAST LESS • type-id GREATER OPEN_PAREN expression CLOSE_PAREN 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 711 type-id → • type-specifier-seq abstract-declarator-opt 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 728 type-specifier-seq → • type-specifier attribute-specifier-seq-opt 729 | • type-specifier type-specifier-seq 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 124 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] $default reduce using rule 709 (type-constraint-opt) class-key go to state 404 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 766 type-name go to state 106 type-specifier go to state 412 type-specifier-seq go to state 413 typedef-name go to state 108 typename-specifier go to state 109
134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 175 cv-qualifier → • CONST 176 | • VOLATILE 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 573 postfix-expression → CONST_CAST LESS • type-id GREATER OPEN_PAREN expression CLOSE_PAREN 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 711 type-id → • type-specifier-seq abstract-declarator-opt 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 728 type-specifier-seq → • type-specifier attribute-specifier-seq-opt 729 | • type-specifier type-specifier-seq 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 124 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] $default reduce using rule 709 (type-constraint-opt) class-key go to state 404 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 767 type-name go to state 106 type-specifier go to state 412 type-specifier-seq go to state 413 typedef-name go to state 108 typename-specifier go to state 109
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 175 cv-qualifier → • CONST 176 | • VOLATILE 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 277 expression → • assignment-expression 278 | • expression COMMA assignment-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 574 | TYPEID OPEN_PAREN • expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 575 | TYPEID OPEN_PAREN • type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 711 type-id → • type-specifier-seq abstract-declarator-opt 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 728 type-specifier-seq → • type-specifier attribute-specifier-seq-opt 729 | • type-specifier type-specifier-seq 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 OPERATOR shift, and go to state 248 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 124 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 await-expression go to state 268 cast-expression go to state 269 class-key go to state 404 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 273 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 768 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 407 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 769 type-name go to state 106 type-specifier go to state 412 type-specifier-seq go to state 413 typedef-name go to state 108 typename-specifier go to state 414 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
55 assignment-expression-opt → assignment-expression • $default reduce using rule 55 (assignment-expression-opt)
700 throw-expression → THROW assignment-expression-opt • $default reduce using rule 700 (throw-expression)
742 unary-expression → SIZEOF ELLIPSIS • OPEN_PAREN IDENTIFIER CLOSE_PAREN OPEN_PAREN shift, and go to state 770
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 175 cv-qualifier → • CONST 176 | • VOLATILE 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 277 expression → • assignment-expression 278 | • expression COMMA assignment-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 285 | OPEN_PAREN • cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 286 | OPEN_PAREN • ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | OPEN_PAREN • cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 578 | OPEN_PAREN • expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 711 type-id → • type-specifier-seq abstract-declarator-opt 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 728 type-specifier-seq → • type-specifier attribute-specifier-seq-opt 729 | • type-specifier type-specifier-seq 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 741 | SIZEOF OPEN_PAREN • type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list ELLIPSIS shift, and go to state 437 IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 OPERATOR shift, and go to state 248 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 124 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 await-expression go to state 268 cast-expression go to state 438 class-key go to state 404 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 273 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 439 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 407 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 771 type-name go to state 106 type-specifier go to state 412 type-specifier-seq go to state 413 typedef-name go to state 108 typename-specifier go to state 414 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
740 unary-expression → SIZEOF unary-expression • $default reduce using rule 740 (unary-expression)
134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 175 cv-qualifier → • CONST 176 | • VOLATILE 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 711 type-id → • type-specifier-seq abstract-declarator-opt 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 728 type-specifier-seq → • type-specifier attribute-specifier-seq-opt 729 | • type-specifier type-specifier-seq 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 743 unary-expression → ALIGNOF OPEN_PAREN • type-id CLOSE_PAREN IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 124 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] $default reduce using rule 709 (type-constraint-opt) class-key go to state 404 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 772 type-name go to state 106 type-specifier go to state 412 type-specifier-seq go to state 413 typedef-name go to state 108 typename-specifier go to state 109
774 yield-expression → CO_YIELD assignment-expression • $default reduce using rule 774 (yield-expression)
775 yield-expression → CO_YIELD braced-init-list • $default reduce using rule 775 (yield-expression)
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 222 | SCOPE-opt DELETE • cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 223 | SCOPE-opt DELETE • OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 773 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 await-expression go to state 268 cast-expression go to state 774 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
466 new-expression → SCOPE-opt NEW • new-placement-opt new-type-id new-initializer-opt 467 | SCOPE-opt NEW • new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 472 new-placement → • OPEN_PAREN expression-list CLOSE_PAREN 473 new-placement-opt → • %empty [IDENTIFIER, SCOPE, TYPENAME, OPEN_PAREN, CLASS, STRUCT, UNION, CONST, VOLATILE, DECLTYPE, ENUM, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID] 474 | • new-placement OPEN_PAREN shift, and go to state 775 OPEN_PAREN [reduce using rule 473 (new-placement-opt)] $default reduce using rule 473 (new-placement-opt) new-placement go to state 776 new-placement-opt go to state 777
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 42 additive-expression → additive-expression PLUS • multiplicative-expression 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 multiplicative-expression go to state 778 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 43 additive-expression → additive-expression MINUS • multiplicative-expression 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 multiplicative-expression go to state 779 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 48 and-expression → and-expression AND • equality-expression 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 780 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 147 compare-expression → compare-expression SPACESHIP • shift-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 shift-expression go to state 781 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 257 equality-expression → equality-expression EQ_EQ • relational-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 782 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 258 equality-expression → equality-expression NOT_EQ • relational-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 783 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 263 exclusive-or-expression → exclusive-or-expression XOR • and-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 784 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 278 expression → expression COMMA • assignment-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 785 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
214 decltype-specifier → DECLTYPE OPEN_PAREN expression CLOSE_PAREN • $default reduce using rule 214 (decltype-specifier)
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 345 inclusive-or-expression → inclusive-or-expression OR • exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 786 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, EXTERN, IDENTIFIER, INLINE, SCOPE, THIS, TYPENAME, VIRTUAL, ALIGNAS, OPEN_SQUARE, CLASS, STRUCT, UNION, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 84 | • attribute-specifier-seq 385 lambda-declarator → OPEN_PAREN • parameter-declaration-clause CLOSE_PAREN lambda-specifiers requires-clause-opt 543 parameter-declaration → • attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 544 | • attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator EQ initializer-clause 545 | • attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 546 | • attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt EQ initializer-clause 547 parameter-declaration-clause → • parameter-declaration-list-opt ELLIPSIS-opt 548 | • parameter-declaration-list COMMA ELLIPSIS 549 parameter-declaration-list → • parameter-declaration 550 | • parameter-declaration-list COMMA parameter-declaration 551 parameter-declaration-list-opt → • %empty [ELLIPSIS, CLOSE_PAREN] 552 | • parameter-declaration-list ELLIPSIS reduce using rule 551 (parameter-declaration-list-opt) CLOSE_PAREN reduce using rule 551 (parameter-declaration-list-opt) $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 219 parameter-declaration go to state 617 parameter-declaration-clause go to state 787 parameter-declaration-list go to state 619 parameter-declaration-list-opt go to state 620
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, EXTERN, IDENTIFIER, INLINE, SCOPE, THIS, TYPENAME, VIRTUAL, ALIGNAS, OPEN_SQUARE, CLASS, STRUCT, UNION, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 84 | • attribute-specifier-seq 137 class-name → • IDENTIFIER 138 | • simple-template-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 387 lambda-expression → lambda-introducer LESS • template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 543 parameter-declaration → • attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 544 | • attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator EQ initializer-clause 545 | • attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 546 | • attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt EQ initializer-clause 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 691 template-head → • TEMPLATE LESS template-parameter-list GREATER requires-clause-opt 695 template-name → • IDENTIFIER 696 template-parameter → • type-parameter 697 | • parameter-declaration 698 template-parameter-list → • template-parameter 699 | • template-parameter-list COMMA template-parameter 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 715 type-parameter → • type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 716 | • type-parameter-key IDENTIFIER-opt EQ type-id 717 | • type-constraint ELLIPSIS-opt IDENTIFIER-opt 718 | • type-constraint IDENTIFIER-opt EQ type-id 719 | • template-head type-parameter-key ELLIPSIS-opt IDENTIFIER-opt 720 | • template-head type-parameter-key IDENTIFIER-opt EQ id-expression 721 type-parameter-key → • CLASS 722 | • TYPENAME 730 typedef-name → • IDENTIFIER 731 | • simple-template-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 TEMPLATE shift, and go to state 215 TYPENAME shift, and go to state 216 CLASS shift, and go to state 217 DECLTYPE shift, and go to state 21 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] CLASS [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 219 class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 132 nested-name-specifier-opt go to state 220 parameter-declaration go to state 221 simple-template-id go to state 96 template-head go to state 222 template-name go to state 102 template-parameter go to state 223 template-parameter-list go to state 788 type-constraint go to state 225 type-name go to state 106 type-parameter go to state 226 type-parameter-key go to state 227 typedef-name go to state 108
192 decl-specifier-seq-opt → decl-specifier-seq • $default reduce using rule 192 (decl-specifier-seq-opt)
389 lambda-specifiers → decl-specifier-seq-opt • noexcept-specifier-opt attribute-specifier-seq-opt trailing-return-type-opt 478 noexcept-specifier → • NOEXCEPT OPEN_PAREN constant-expression CLOSE_PAREN 479 | • NOEXCEPT 480 noexcept-specifier-opt → • %empty [ALIGNAS, OPEN_SQUARE, OPEN_BRACE, DEREF, REQUIRES] 481 | • noexcept-specifier NOEXCEPT shift, and go to state 789 $default reduce using rule 480 (noexcept-specifier-opt) noexcept-specifier go to state 790 noexcept-specifier-opt go to state 791
149 compound-statement → • OPEN_BRACE statement-seq-opt CLOSE_BRACE 386 lambda-expression → lambda-introducer lambda-declarator • compound-statement OPEN_BRACE shift, and go to state 792 compound-statement go to state 793
384 lambda-declarator → lambda-specifiers • $default reduce using rule 384 (lambda-declarator)
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 158 constant-expression → • conditional-expression 169 conversion-function-id → • OPERATOR conversion-type-id 175 cv-qualifier → • CONST 176 | • VOLATILE 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 682 template-argument → • constant-expression 683 | • type-id 684 | • id-expression 685 template-argument-list → • template-argument ELLIPSIS-opt 686 | • template-argument-list COMMA template-argument ELLIPSIS-opt 687 template-argument-list-opt → • %empty [GREATER] 688 | • template-argument-list 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 694 | literal-operator-id LESS • template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 711 type-id → • type-specifier-seq abstract-declarator-opt 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 728 type-specifier-seq → • type-specifier attribute-specifier-seq-opt 729 | • type-specifier type-specifier-seq 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 OPERATOR shift, and go to state 248 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 124 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] GREATER reduce using rule 687 (template-argument-list-opt) AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-key go to state 404 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 307 constant-expression go to state 405 conversion-function-id go to state 272 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 273 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 406 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 309 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 407 template-argument go to state 408 template-argument-list go to state 409 template-argument-list-opt go to state 794 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 411 type-name go to state 106 type-specifier go to state 412 type-specifier-seq go to state 413 typedef-name go to state 108 typename-specifier go to state 414 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 395 logical-and-expression → logical-and-expression AND_AND • inclusive-or-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 795 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
56 assignment-operator → EQ • $default reduce using rule 56 (assignment-operator)
57 assignment-operator → MULT_EQ • $default reduce using rule 57 (assignment-operator)
58 assignment-operator → DIV_EQ • $default reduce using rule 58 (assignment-operator)
59 assignment-operator → MOD_EQ • $default reduce using rule 59 (assignment-operator)
60 assignment-operator → PLUS_EQ • $default reduce using rule 60 (assignment-operator)
61 assignment-operator → MINUS_EQ • $default reduce using rule 61 (assignment-operator)
62 assignment-operator → RSHIFT_EQ • $default reduce using rule 62 (assignment-operator)
63 assignment-operator → LSHIFT_EQ • $default reduce using rule 63 (assignment-operator)
64 assignment-operator → AND_EQ • $default reduce using rule 64 (assignment-operator)
65 assignment-operator → XOR_EQ • $default reduce using rule 65 (assignment-operator)
66 assignment-operator → OR_EQ • $default reduce using rule 66 (assignment-operator)
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 157 | logical-or-expression QUERY • expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 277 expression → • assignment-expression 278 | • expression COMMA assignment-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 796 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 397 logical-or-expression → logical-or-expression OR_OR • logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 797 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 53 | logical-or-expression assignment-operator • initializer-clause 90 await-expression → • CO_AWAIT cast-expression 120 braced-init-list → • OPEN_BRACE initializer-list COMMA-opt CLOSE_BRACE 121 | • OPEN_BRACE designated-initializer-list COMMA-opt CLOSE_BRACE 122 | • OPEN_BRACE CLOSE_BRACE 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 361 initializer-clause → • assignment-expression 362 | • braced-init-list 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPEN_BRACE shift, and go to state 378 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 640 await-expression go to state 268 braced-init-list go to state 641 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 initializer-clause go to state 798 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 440 multiplicative-expression → multiplicative-expression MULT • pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 799 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 441 multiplicative-expression → multiplicative-expression DIV • pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 800 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 442 multiplicative-expression → multiplicative-expression MOD • pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 801 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
169 conversion-function-id → • OPERATOR conversion-type-id 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 457 nested-name-specifier → nested-name-specifier TEMPLATE-opt • simple-template-id SCOPE 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 599 qualified-id → nested-name-specifier TEMPLATE-opt • unqualified-id 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 802 OPERATOR shift, and go to state 248 COMPL shift, and go to state 334 conversion-function-id go to state 272 literal-operator-id go to state 282 operator-function-id go to state 289 simple-template-id go to state 803 template-id go to state 299 template-name go to state 102 unqualified-id go to state 804
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 158 constant-expression → • conditional-expression 169 conversion-function-id → • OPERATOR conversion-type-id 175 cv-qualifier → • CONST 176 | • VOLATILE 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 682 template-argument → • constant-expression 683 | • type-id 684 | • id-expression 685 template-argument-list → • template-argument ELLIPSIS-opt 686 | • template-argument-list COMMA template-argument ELLIPSIS-opt 687 template-argument-list-opt → • %empty [GREATER] 688 | • template-argument-list 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 693 | operator-function-id LESS • template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 711 type-id → • type-specifier-seq abstract-declarator-opt 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 728 type-specifier-seq → • type-specifier attribute-specifier-seq-opt 729 | • type-specifier type-specifier-seq 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 OPERATOR shift, and go to state 248 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 124 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] GREATER reduce using rule 687 (template-argument-list-opt) AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-key go to state 404 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 307 constant-expression go to state 405 conversion-function-id go to state 272 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 273 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 406 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 309 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 407 template-argument go to state 408 template-argument-list go to state 409 template-argument-list-opt go to state 805 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 411 type-name go to state 106 type-specifier go to state 412 type-specifier-seq go to state 413 typedef-name go to state 108 typename-specifier go to state 414 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 557 pm-expression → pm-expression DOT_STAR • cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 await-expression go to state 268 cast-expression go to state 806 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 558 pm-expression → pm-expression DEREF_STAR • cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 await-expression go to state 268 cast-expression go to state 807 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 90 await-expression → • CO_AWAIT cast-expression 120 braced-init-list → • OPEN_BRACE initializer-list COMMA-opt CLOSE_BRACE 121 | • OPEN_BRACE designated-initializer-list COMMA-opt CLOSE_BRACE 122 | • OPEN_BRACE CLOSE_BRACE 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 279 expression-list → • initializer-list 280 expression-list-opt → • %empty [CLOSE_PAREN] 281 | • expression-list 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 361 initializer-clause → • assignment-expression 362 | • braced-init-list 363 initializer-list → • initializer-clause ELLIPSIS-opt 364 | • initializer-list COMMA initializer-clause ELLIPSIS-opt 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 561 | postfix-expression OPEN_PAREN • expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPEN_BRACE shift, and go to state 378 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] CLOSE_PAREN reduce using rule 280 (expression-list-opt) DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 640 await-expression go to state 268 braced-init-list go to state 641 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression-list go to state 808 expression-list-opt go to state 809 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 initializer-clause go to state 644 initializer-list go to state 645 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 90 await-expression → • CO_AWAIT cast-expression 120 braced-init-list → • OPEN_BRACE initializer-list COMMA-opt CLOSE_BRACE 121 | • OPEN_BRACE designated-initializer-list COMMA-opt CLOSE_BRACE 122 | • OPEN_BRACE CLOSE_BRACE 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 279 expression-list → • initializer-list 280 expression-list-opt → • %empty [CLOSE_SQUARE] 281 | • expression-list 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 361 initializer-clause → • assignment-expression 362 | • braced-init-list 363 initializer-list → • initializer-clause ELLIPSIS-opt 364 | • initializer-list COMMA initializer-clause ELLIPSIS-opt 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 560 | postfix-expression OPEN_SQUARE • expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPEN_BRACE shift, and go to state 378 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] CLOSE_SQUARE reduce using rule 280 (expression-list-opt) DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 640 await-expression go to state 268 braced-init-list go to state 641 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression-list go to state 808 expression-list-opt go to state 810 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 initializer-clause go to state 644 initializer-list go to state 645 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
21 TEMPLATE-opt → • %empty [IDENTIFIER, SCOPE, OPERATOR, DECLTYPE, COMPL] 22 | • TEMPLATE 567 postfix-expression → postfix-expression DEREF • TEMPLATE-opt id-expression TEMPLATE shift, and go to state 229 $default reduce using rule 21 (TEMPLATE-opt) TEMPLATE-opt go to state 811
21 TEMPLATE-opt → • %empty [IDENTIFIER, SCOPE, OPERATOR, DECLTYPE, COMPL] 22 | • TEMPLATE 566 postfix-expression → postfix-expression DOT • TEMPLATE-opt id-expression TEMPLATE shift, and go to state 229 $default reduce using rule 21 (TEMPLATE-opt) TEMPLATE-opt go to state 812
568 postfix-expression → postfix-expression PLUS_PLUS • $default reduce using rule 568 (postfix-expression)
569 postfix-expression → postfix-expression MINUS_MINUS • $default reduce using rule 569 (postfix-expression)
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 606 relational-expression → relational-expression LESS • compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 813 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 607 relational-expression → relational-expression GREATER • compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 814 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 608 relational-expression → relational-expression LESS_EQ • compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 815 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 609 relational-expression → relational-expression GREATER_EQ • compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 816 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 633 shift-expression → shift-expression LSHIFT • additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 817 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 634 shift-expression → shift-expression RSHIFT • additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 818 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 90 await-expression → • CO_AWAIT cast-expression 120 braced-init-list → • OPEN_BRACE initializer-list COMMA-opt CLOSE_BRACE 121 | • OPEN_BRACE designated-initializer-list COMMA-opt CLOSE_BRACE 122 | • OPEN_BRACE CLOSE_BRACE 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 279 expression-list → • initializer-list 280 expression-list-opt → • %empty [CLOSE_PAREN] 281 | • expression-list 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 361 initializer-clause → • assignment-expression 362 | • braced-init-list 363 initializer-list → • initializer-clause ELLIPSIS-opt 364 | • initializer-list COMMA initializer-clause ELLIPSIS-opt 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | simple-type-specifier OPEN_PAREN • expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPEN_BRACE shift, and go to state 378 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] CLOSE_PAREN reduce using rule 280 (expression-list-opt) DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 640 await-expression go to state 268 braced-init-list go to state 641 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression-list go to state 808 expression-list-opt go to state 819 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 initializer-clause go to state 644 initializer-list go to state 645 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
564 postfix-expression → simple-type-specifier braced-init-list • $default reduce using rule 564 (postfix-expression)
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 90 await-expression → • CO_AWAIT cast-expression 120 braced-init-list → • OPEN_BRACE initializer-list COMMA-opt CLOSE_BRACE 121 | • OPEN_BRACE designated-initializer-list COMMA-opt CLOSE_BRACE 122 | • OPEN_BRACE CLOSE_BRACE 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 279 expression-list → • initializer-list 280 expression-list-opt → • %empty [CLOSE_PAREN] 281 | • expression-list 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 361 initializer-clause → • assignment-expression 362 | • braced-init-list 363 initializer-list → • initializer-clause ELLIPSIS-opt 364 | • initializer-list COMMA initializer-clause ELLIPSIS-opt 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | typename-specifier OPEN_PAREN • expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPEN_BRACE shift, and go to state 378 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] CLOSE_PAREN reduce using rule 280 (expression-list-opt) DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 640 await-expression go to state 268 braced-init-list go to state 641 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression-list go to state 808 expression-list-opt go to state 820 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 initializer-clause go to state 644 initializer-list go to state 645 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
565 postfix-expression → typename-specifier braced-init-list • $default reduce using rule 565 (postfix-expression)
736 unary-expression → unary-operator cast-expression • $default reduce using rule 736 (unary-expression)
266 explicit-specifier → EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN • $default reduce using rule 266 (explicit-specifier)
436 module-partition → COLON module-name-qualifier-opt IDENTIFIER • $default reduce using rule 436 (module-partition)
430 module-import-declaration → IMPORT header-name attribute-specifier-seq-opt SEMICOLON • $default reduce using rule 430 (module-import-declaration)
428 module-import-declaration → IMPORT module-name attribute-specifier-seq-opt SEMICOLON • $default reduce using rule 428 (module-import-declaration)
433 module-name-qualifier → module-name-qualifier IDENTIFIER DOT • $default reduce using rule 433 (module-name-qualifier)
429 module-import-declaration → IMPORT module-partition attribute-specifier-seq-opt SEMICOLON • $default reduce using rule 429 (module-import-declaration)
444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 600 qualified-namespace-specifier → nested-name-specifier-opt • namespace-name IDENTIFIER shift, and go to state 821 namespace-alias go to state 85 namespace-name go to state 822
445 namespace-alias-definition → NAMESPACE IDENTIFIER EQ qualified-namespace-specifier • SEMICOLON SEMICOLON shift, and go to state 823
14 INLINE-opt → INLINE • $default reduce using rule 14 (INLINE-opt)
235 enclosing-namespace-specifier → enclosing-namespace-specifier SCOPE INLINE-opt • IDENTIFIER 460 nested-namespace-definition → NAMESPACE enclosing-namespace-specifier SCOPE INLINE-opt • IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE IDENTIFIER shift, and go to state 824
676 static_assert-declaration → STATIC_ASSERT OPEN_PAREN constant-expression COMMA • string-literal CLOSE_PAREN SEMICOLON 681 string-literal → • STRING_LITERAL STRING_LITERAL shift, and go to state 117 string-literal go to state 825
675 static_assert-declaration → STATIC_ASSERT OPEN_PAREN constant-expression CLOSE_PAREN • SEMICOLON SEMICOLON shift, and go to state 826
443 named-namespace-definition → INLINE-opt NAMESPACE attribute-specifier-seq-opt IDENTIFIER • OPEN_BRACE namespace-body CLOSE_BRACE OPEN_BRACE shift, and go to state 827
9 EXTERN-opt → • %empty [TEMPLATE] 10 | • EXTERN 13 INLINE-opt → • %empty [NAMESPACE] 14 | • INLINE 44 alias-declaration → • USING IDENTIFIER attribute-specifier-seq-opt EQ defining-type-id SEMICOLON 49 asm-declaration → • attribute-specifier-seq-opt ASM OPEN_PAREN string-literal CLOSE_PAREN SEMICOLON 71 attribute-declaration → • attribute-specifier-seq SEMICOLON 82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, ELLIPSIS, EXTERN, IDENTIFIER, INLINE, SCOPE, TYPENAME, VIRTUAL, USING, ALIGNAS, OPEN_PAREN, AND, ASM, OPEN_SQUARE, CLASS, STRUCT, UNION, AND_AND, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, MULT, COMPL, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 84 | • attribute-specifier-seq 107 block-declaration → • simple-declaration 108 | • asm-declaration 109 | • namespace-alias-definition 110 | • using-declaration 111 | • using-enum-declaration 112 | • using-directive 113 | • static_assert-declaration 114 | • alias-declaration 115 | • opaque-enum-declaration 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 193 declaration → • block-declaration 194 | • nodeclspec-function-declaration 195 | • function-definition 196 | • template-declaration 197 | • deduction-guide 198 | • explicit-instantiation 199 | • explicit-specialization 200 | • export-declaration 201 | • linkage-specification 202 | • namespace-definition 203 | • empty-declaration 204 | • attribute-declaration 205 | • module-import-declaration 206 declaration-seq → • declaration 207 | • declaration-seq declaration 208 declaration-seq-opt → • %empty [CLOSE_BRACE] 209 | • declaration-seq 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 215 deduction-guide → • explicit-specifier-opt template-name OPEN_PAREN parameter-declaration-clause CLOSE_PAREN DEREF simple-template-id SEMICOLON 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 233 empty-declaration → • SEMICOLON 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 264 explicit-instantiation → • EXTERN-opt TEMPLATE declaration 265 explicit-specialization → • TEMPLATE LESS GREATER declaration 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 268 explicit-specifier-opt → • %empty [IDENTIFIER] 269 | • explicit-specifier 270 export-declaration → • EXPORT declaration 271 | • EXPORT OPEN_BRACE declaration-seq-opt CLOSE_BRACE 272 | • EXPORT module-import-declaration 327 function-definition → • attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | • attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 390 linkage-specification → • EXTERN string-literal OPEN_BRACE declaration-seq-opt CLOSE_BRACE 391 | • EXTERN string-literal declaration 428 module-import-declaration → • IMPORT module-name attribute-specifier-seq-opt SEMICOLON 429 | • IMPORT module-partition attribute-specifier-seq-opt SEMICOLON 430 | • IMPORT header-name attribute-specifier-seq-opt SEMICOLON 443 named-namespace-definition → • INLINE-opt NAMESPACE attribute-specifier-seq-opt IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE 444 namespace-alias → • IDENTIFIER 445 namespace-alias-definition → • NAMESPACE IDENTIFIER EQ qualified-namespace-specifier SEMICOLON 446 namespace-body → • declaration-seq-opt 447 namespace-definition → • named-namespace-definition 448 | • unnamed-namespace-definition 449 | • nested-namespace-definition 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 460 nested-namespace-definition → • NAMESPACE enclosing-namespace-specifier SCOPE INLINE-opt IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE 476 nodeclspec-function-declaration → • attribute-specifier-seq-opt declarator SEMICOLON 496 opaque-enum-declaration → • enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt SEMICOLON 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 639 simple-declaration → • decl-specifier-seq init-declarator-list-opt SEMICOLON 640 | • attribute-specifier-seq decl-specifier-seq init-declarator-list SEMICOLON 641 | • attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE initializer SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 675 static_assert-declaration → • STATIC_ASSERT OPEN_PAREN constant-expression CLOSE_PAREN SEMICOLON 676 | • STATIC_ASSERT OPEN_PAREN constant-expression COMMA string-literal CLOSE_PAREN SEMICOLON 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 689 template-declaration → • template-head declaration 690 | • template-head concept-definition 691 template-head → • TEMPLATE LESS template-parameter-list GREATER requires-clause-opt 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 753 unnamed-namespace-definition → • INLINE-opt NAMESPACE attribute-specifier-seq-opt OPEN_BRACE namespace-body CLOSE_BRACE 753 | INLINE-opt NAMESPACE attribute-specifier-seq-opt OPEN_BRACE • namespace-body CLOSE_BRACE 762 using-declaration → • USING using-declarator-list SEMICOLON 766 using-directive → • attribute-specifier-seq-opt USING NAMESPACE nested-name-specifier-opt namespace-name SEMICOLON 767 using-enum-declaration → • USING elaborated-enum-specifier SEMICOLON CONSTEXPR shift, and go to state 1 EXPORT shift, and go to state 2 EXTERN shift, and go to state 3 IDENTIFIER shift, and go to state 4 INLINE shift, and go to state 5 SCOPE shift, and go to state 6 TEMPLATE shift, and go to state 7 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 USING shift, and go to state 10 SEMICOLON shift, and go to state 11 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 IMPORT shift, and go to state 25 NAMESPACE shift, and go to state 26 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC_ASSERT shift, and go to state 41 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 CONSTEXPR [reduce using rule 83 (attribute-specifier-seq-opt)] EXTERN [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] INLINE [reduce using rule 83 (attribute-specifier-seq-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] TEMPLATE [reduce using rule 9 (EXTERN-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] VIRTUAL [reduce using rule 83 (attribute-specifier-seq-opt)] USING [reduce using rule 83 (attribute-specifier-seq-opt)] CLOSE_BRACE reduce using rule 208 (declaration-seq-opt) CLASS [reduce using rule 83 (attribute-specifier-seq-opt)] STRUCT [reduce using rule 83 (attribute-specifier-seq-opt)] UNION [reduce using rule 83 (attribute-specifier-seq-opt)] CONST [reduce using rule 83 (attribute-specifier-seq-opt)] VOLATILE [reduce using rule 83 (attribute-specifier-seq-opt)] FRIEND [reduce using rule 83 (attribute-specifier-seq-opt)] TYPEDEF [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTEVAL [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTINIT [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] ENUM [reduce using rule 83 (attribute-specifier-seq-opt)] EXPLICIT [reduce using rule 83 (attribute-specifier-seq-opt)] NAMESPACE [reduce using rule 13 (INLINE-opt)] AUTO reduce using rule 83 (attribute-specifier-seq-opt) AUTO [reduce using rule 709 (type-constraint-opt)] CHAR [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR8_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR16_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR32_T [reduce using rule 83 (attribute-specifier-seq-opt)] WCHAR_T [reduce using rule 83 (attribute-specifier-seq-opt)] BOOL [reduce using rule 83 (attribute-specifier-seq-opt)] SHORT [reduce using rule 83 (attribute-specifier-seq-opt)] INT [reduce using rule 83 (attribute-specifier-seq-opt)] LONG [reduce using rule 83 (attribute-specifier-seq-opt)] SIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] UNSIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] FLOAT [reduce using rule 83 (attribute-specifier-seq-opt)] DOUBLE [reduce using rule 83 (attribute-specifier-seq-opt)] VOID [reduce using rule 83 (attribute-specifier-seq-opt)] STATIC [reduce using rule 83 (attribute-specifier-seq-opt)] THREAD_LOCAL [reduce using rule 83 (attribute-specifier-seq-opt)] MUTABLE [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 60 declaration-seq go to state 61 declaration-seq-opt go to state 828 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-body go to state 829 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113
640 simple-declaration → attribute-specifier-seq decl-specifier-seq init-declarator-list SEMICOLON • $default reduce using rule 640 (simple-declaration)
242 enum-head-name-opt → enum-head-name • $default reduce using rule 242 (enum-head-name-opt)
444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 766 using-directive → attribute-specifier-seq-opt USING NAMESPACE nested-name-specifier-opt • namespace-name SEMICOLON IDENTIFIER shift, and go to state 821 namespace-alias go to state 85 namespace-name go to state 830
5 ELLIPSIS-opt → • %empty [CLOSE_PAREN] 6 | • ELLIPSIS 46 alignment-specifier → ALIGNAS OPEN_PAREN constant-expression • ELLIPSIS-opt CLOSE_PAREN ELLIPSIS shift, and go to state 155 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 831
5 ELLIPSIS-opt → • %empty [CLOSE_PAREN] 6 | • ELLIPSIS 45 alignment-specifier → ALIGNAS OPEN_PAREN type-id • ELLIPSIS-opt CLOSE_PAREN ELLIPSIS shift, and go to state 155 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 832
491 noptr-declarator → noptr-declarator parameters-and-qualifiers • $default reduce using rule 491 (noptr-declarator)
493 noptr-declarator → OPEN_PAREN ptr-declarator CLOSE_PAREN • $default reduce using rule 493 (noptr-declarator)
49 asm-declaration → attribute-specifier-seq-opt ASM OPEN_PAREN string-literal • CLOSE_PAREN SEMICOLON CLOSE_PAREN shift, and go to state 833
76 attribute-namespace → • IDENTIFIER 87 attribute-using-prefix → USING • attribute-namespace COLON IDENTIFIER shift, and go to state 834 attribute-namespace go to state 835
89 attribute-using-prefix-opt → attribute-using-prefix • $default reduce using rule 89 (attribute-using-prefix-opt)
67 attribute → • attribute-token attribute-argument-clause-opt 72 attribute-list → • attribute-opt 73 | • attribute-list COMMA attribute-opt 74 | • attribute ELLIPSIS 75 | • attribute-list COMMA attribute ELLIPSIS 76 attribute-namespace → • IDENTIFIER 77 attribute-opt → • %empty [COMMA, CLOSE_SQUARE] 78 | • attribute 79 attribute-scoped-token → • attribute-namespace SCOPE IDENTIFIER 80 attribute-specifier → OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt • attribute-list CLOSE_SQUARE CLOSE_SQUARE 85 attribute-token → • IDENTIFIER 86 | • attribute-scoped-token IDENTIFIER shift, and go to state 836 $default reduce using rule 77 (attribute-opt) attribute go to state 837 attribute-list go to state 838 attribute-namespace go to state 839 attribute-opt go to state 840 attribute-scoped-token go to state 841 attribute-token go to state 842
175 cv-qualifier → • CONST 176 | • VOLATILE 177 cv-qualifier-seq → • cv-qualifier cv-qualifier-seq-opt 177 | cv-qualifier • cv-qualifier-seq-opt 178 cv-qualifier-seq-opt → • %empty [COMMA, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, PLUS, MINUS, USING, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, ASM, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, OPEN_SQUARE, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, CLASS, STRUCT, UNION, FINAL, SPACESHIP, CONCEPT, QUERY, AND_AND, OR_OR, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, DOT, ENUM, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, EXPLICIT, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR, TRY, IMPORT, NAMESPACE, REQUIRES, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE, OVERRIDE] 179 | • cv-qualifier-seq CONST shift, and go to state 15 VOLATILE shift, and go to state 16 CONST [reduce using rule 178 (cv-qualifier-seq-opt)] VOLATILE [reduce using rule 178 (cv-qualifier-seq-opt)] $default reduce using rule 178 (cv-qualifier-seq-opt) cv-qualifier go to state 606 cv-qualifier-seq go to state 607 cv-qualifier-seq-opt go to state 843
179 cv-qualifier-seq-opt → cv-qualifier-seq • $default reduce using rule 179 (cv-qualifier-seq-opt)
592 ptr-operator → MULT attribute-specifier-seq-opt cv-qualifier-seq-opt • $default reduce using rule 592 (ptr-operator)
342 identifier-list → • IDENTIFIER 343 | • identifier-list COMMA IDENTIFIER 641 simple-declaration → attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE • identifier-list CLOSE_SQUARE initializer SEMICOLON IDENTIFIER shift, and go to state 844 identifier-list go to state 845
769 virt-specifier → FINAL • $default reduce using rule 769 (virt-specifier)
768 virt-specifier → OVERRIDE • $default reduce using rule 768 (virt-specifier)
172 ctor-initializer → • COLON mem-initializer-list 173 ctor-initializer-opt → • %empty [OPEN_BRACE] 174 | • ctor-initializer 323 function-body → • ctor-initializer-opt compound-statement 324 | • function-try-block 325 | • EQ DEFAULT SEMICOLON 326 | • EQ DELETE SEMICOLON 328 function-definition → attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause • function-body 331 function-try-block → • TRY ctor-initializer-opt compound-statement handler-seq EQ shift, and go to state 846 COLON shift, and go to state 847 TRY shift, and go to state 848 $default reduce using rule 173 (ctor-initializer-opt) ctor-initializer go to state 849 ctor-initializer-opt go to state 850 function-body go to state 851 function-try-block go to state 852
770 virt-specifier-seq → virt-specifier • $default reduce using rule 770 (virt-specifier-seq)
768 virt-specifier → • OVERRIDE 769 | • FINAL 771 virt-specifier-seq → virt-specifier-seq • virt-specifier 773 virt-specifier-seq-opt → virt-specifier-seq • [COMMA, EQ, SEMICOLON, COLON, OPEN_BRACE, TRY] FINAL shift, and go to state 610 OVERRIDE shift, and go to state 611 $default reduce using rule 773 (virt-specifier-seq-opt) virt-specifier go to state 853
172 ctor-initializer → • COLON mem-initializer-list 173 ctor-initializer-opt → • %empty [OPEN_BRACE] 174 | • ctor-initializer 323 function-body → • ctor-initializer-opt compound-statement 324 | • function-try-block 325 | • EQ DEFAULT SEMICOLON 326 | • EQ DELETE SEMICOLON 327 function-definition → attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt • function-body 331 function-try-block → • TRY ctor-initializer-opt compound-statement handler-seq EQ shift, and go to state 846 COLON shift, and go to state 847 TRY shift, and go to state 848 $default reduce using rule 173 (ctor-initializer-opt) ctor-initializer go to state 849 ctor-initializer-opt go to state 850 function-body go to state 854 function-try-block go to state 852
45 alignment-specifier → • ALIGNAS OPEN_PAREN type-id ELLIPSIS-opt CLOSE_PAREN 46 | • ALIGNAS OPEN_PAREN constant-expression ELLIPSIS-opt CLOSE_PAREN 80 attribute-specifier → • OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE 81 | • alignment-specifier 82 attribute-specifier-seq → attribute-specifier-seq-opt • attribute-specifier 175 cv-qualifier → • CONST 176 | • VOLATILE 177 cv-qualifier-seq → • cv-qualifier cv-qualifier-seq-opt 178 cv-qualifier-seq-opt → • %empty [COMMA, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, PLUS, MINUS, USING, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, ASM, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, OPEN_SQUARE, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, CLASS, STRUCT, UNION, FINAL, SPACESHIP, CONCEPT, QUERY, AND_AND, OR_OR, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, DOT, ENUM, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, EXPLICIT, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR, TRY, IMPORT, NAMESPACE, REQUIRES, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE, OVERRIDE] 179 | • cv-qualifier-seq 595 ptr-operator → nested-name-specifier MULT attribute-specifier-seq-opt • cv-qualifier-seq-opt ALIGNAS shift, and go to state 157 OPEN_SQUARE shift, and go to state 161 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 ALIGNAS [reduce using rule 178 (cv-qualifier-seq-opt)] OPEN_SQUARE [reduce using rule 178 (cv-qualifier-seq-opt)] CONST [reduce using rule 178 (cv-qualifier-seq-opt)] VOLATILE [reduce using rule 178 (cv-qualifier-seq-opt)] $default reduce using rule 178 (cv-qualifier-seq-opt) alignment-specifier go to state 165 attribute-specifier go to state 166 cv-qualifier go to state 606 cv-qualifier-seq go to state 607 cv-qualifier-seq-opt go to state 855
549 parameter-declaration-list → parameter-declaration • $default reduce using rule 549 (parameter-declaration-list)
553 parameters-and-qualifiers → OPEN_PAREN parameter-declaration-clause • CLOSE_PAREN cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt CLOSE_PAREN shift, and go to state 856
548 parameter-declaration-clause → parameter-declaration-list • COMMA ELLIPSIS 550 parameter-declaration-list → parameter-declaration-list • COMMA parameter-declaration 552 parameter-declaration-list-opt → parameter-declaration-list • [ELLIPSIS, CLOSE_PAREN] COMMA shift, and go to state 857 $default reduce using rule 552 (parameter-declaration-list-opt)
5 ELLIPSIS-opt → • %empty [CLOSE_PAREN] 6 | • ELLIPSIS 547 parameter-declaration-clause → parameter-declaration-list-opt • ELLIPSIS-opt ELLIPSIS shift, and go to state 155 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 858
160 constant-expression-opt → constant-expression • $default reduce using rule 160 (constant-expression-opt)
492 noptr-declarator → noptr-declarator OPEN_SQUARE constant-expression-opt • CLOSE_SQUARE attribute-specifier-seq-opt CLOSE_SQUARE shift, and go to state 859
134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 175 cv-qualifier → • CONST 176 | • VOLATILE 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 695 template-name → • IDENTIFIER 701 trailing-return-type → DEREF • type-id 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 711 type-id → • type-specifier-seq abstract-declarator-opt 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 728 type-specifier-seq → • type-specifier attribute-specifier-seq-opt 729 | • type-specifier type-specifier-seq 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 124 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] $default reduce using rule 709 (type-constraint-opt) class-key go to state 404 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 860 type-name go to state 106 type-specifier go to state 412 type-specifier-seq go to state 413 typedef-name go to state 108 typename-specifier go to state 109
212 declarator → noptr-declarator parameters-and-qualifiers trailing-return-type • $default reduce using rule 212 (declarator)
36 access-specifier → • PRIVATE 37 | • PROTECTED 38 | • PUBLIC 44 alias-declaration → • USING IDENTIFIER attribute-specifier-seq-opt EQ defining-type-id SEMICOLON 82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, ELLIPSIS, EXTERN, IDENTIFIER, INLINE, SCOPE, TYPENAME, VIRTUAL, SEMICOLON, ALIGNAS, OPEN_PAREN, AND, OPEN_SQUARE, COLON, CLASS, STRUCT, UNION, AND_AND, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, MULT, COMPL, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 84 | • attribute-specifier-seq 215 deduction-guide → • explicit-specifier-opt template-name OPEN_PAREN parameter-declaration-clause CLOSE_PAREN DEREF simple-template-id SEMICOLON 233 empty-declaration → • SEMICOLON 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 265 explicit-specialization → • TEMPLATE LESS GREATER declaration 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 268 explicit-specifier-opt → • %empty [IDENTIFIER] 269 | • explicit-specifier 327 function-definition → • attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | • attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 404 member-declaration → • attribute-specifier-seq-opt decl-specifier-seq-opt member-declarator-list-opt SEMICOLON 405 | • function-definition 406 | • using-declaration 407 | • using-enum-declaration 408 | • static_assert-declaration 409 | • template-declaration 410 | • explicit-specialization 411 | • deduction-guide 412 | • alias-declaration 413 | • opaque-enum-declaration 414 | • empty-declaration 423 member-specification → • member-declaration member-specification-opt 424 | • access-specifier COLON member-specification-opt 424 | access-specifier COLON • member-specification-opt 425 member-specification-opt → • %empty [CLOSE_BRACE] 426 | • member-specification 496 opaque-enum-declaration → • enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt SEMICOLON 675 static_assert-declaration → • STATIC_ASSERT OPEN_PAREN constant-expression CLOSE_PAREN SEMICOLON 676 | • STATIC_ASSERT OPEN_PAREN constant-expression COMMA string-literal CLOSE_PAREN SEMICOLON 689 template-declaration → • template-head declaration 690 | • template-head concept-definition 691 template-head → • TEMPLATE LESS template-parameter-list GREATER requires-clause-opt 762 using-declaration → • USING using-declarator-list SEMICOLON 767 using-enum-declaration → • USING elaborated-enum-specifier SEMICOLON TEMPLATE shift, and go to state 7 PRIVATE shift, and go to state 349 PROTECTED shift, and go to state 350 PUBLIC shift, and go to state 351 USING shift, and go to state 10 SEMICOLON shift, and go to state 11 ENUM shift, and go to state 352 EXPLICIT shift, and go to state 23 STATIC_ASSERT shift, and go to state 41 IDENTIFIER reduce using rule 83 (attribute-specifier-seq-opt) IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] SEMICOLON [reduce using rule 83 (attribute-specifier-seq-opt)] CLOSE_BRACE reduce using rule 425 (member-specification-opt) ENUM [reduce using rule 83 (attribute-specifier-seq-opt)] EXPLICIT [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) access-specifier go to state 353 alias-declaration go to state 354 attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 355 deduction-guide go to state 356 empty-declaration go to state 357 enum-key go to state 358 explicit-specialization go to state 359 explicit-specifier go to state 360 explicit-specifier-opt go to state 76 function-definition go to state 361 member-declaration go to state 362 member-specification go to state 363 member-specification-opt go to state 861 opaque-enum-declaration go to state 365 static_assert-declaration go to state 366 template-declaration go to state 367 template-head go to state 101 using-declaration go to state 368 using-enum-declaration go to state 369
5 ELLIPSIS-opt → • %empty [IDENTIFIER, SCOPE, OPERATOR, DECLTYPE, COMPL] 6 | • ELLIPSIS 11 IDENTIFIER-opt → • %empty [ALIGNAS, OPEN_SQUARE, COLON] 12 | • IDENTIFIER 137 class-name → • IDENTIFIER 138 | • simple-template-id 211 declarator → • ptr-declarator 212 | • noptr-declarator parameters-and-qualifiers trailing-return-type 213 declarator-id → • ELLIPSIS-opt id-expression 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 327 function-definition → attribute-specifier-seq-opt decl-specifier-seq-opt • declarator virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt • declarator requires-clause function-body 404 member-declaration → attribute-specifier-seq-opt decl-specifier-seq-opt • member-declarator-list-opt SEMICOLON 415 member-declarator → • declarator virt-specifier-seq-opt pure-specifier-opt 416 | • declarator requires-clause 417 | • declarator brace-or-equal-initializer-opt 418 | • IDENTIFIER-opt attribute-specifier-seq-opt COLON constant-expression brace-or-equal-initializer-opt 419 member-declarator-list → • member-declarator 420 | • member-declarator-list COMMA member-declarator 421 member-declarator-list-opt → • %empty [SEMICOLON] 422 | • member-declarator-list 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 490 noptr-declarator → • declarator-id attribute-specifier-seq-opt 491 | • noptr-declarator parameters-and-qualifiers 492 | • noptr-declarator OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 493 | • OPEN_PAREN ptr-declarator CLOSE_PAREN 590 ptr-declarator → • noptr-declarator 591 | • ptr-operator ptr-declarator 592 ptr-operator → • MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 593 | • AND attribute-specifier-seq-opt 594 | • AND_AND attribute-specifier-seq-opt 595 | • nested-name-specifier MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id ELLIPSIS shift, and go to state 155 IDENTIFIER shift, and go to state 862 SCOPE shift, and go to state 6 OPEN_PAREN shift, and go to state 158 AND shift, and go to state 159 AND_AND shift, and go to state 162 DECLTYPE shift, and go to state 21 MULT shift, and go to state 163 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] SCOPE [reduce using rule 5 (ELLIPSIS-opt)] SEMICOLON reduce using rule 421 (member-declarator-list-opt) OPERATOR reduce using rule 5 (ELLIPSIS-opt) DECLTYPE [reduce using rule 5 (ELLIPSIS-opt)] COMPL reduce using rule 5 (ELLIPSIS-opt) $default reduce using rule 11 (IDENTIFIER-opt) ELLIPSIS-opt go to state 164 IDENTIFIER-opt go to state 863 class-name go to state 55 declarator go to state 864 declarator-id go to state 170 decltype-specifier go to state 120 enum-name go to state 71 member-declarator go to state 865 member-declarator-list go to state 866 member-declarator-list-opt go to state 867 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 noptr-declarator go to state 172 ptr-declarator go to state 173 ptr-operator go to state 174 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
45 alignment-specifier → • ALIGNAS OPEN_PAREN type-id ELLIPSIS-opt CLOSE_PAREN 46 | • ALIGNAS OPEN_PAREN constant-expression ELLIPSIS-opt CLOSE_PAREN 80 attribute-specifier → • OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE 81 | • alignment-specifier 82 attribute-specifier-seq → attribute-specifier-seq-opt • attribute-specifier 137 class-name → • IDENTIFIER 138 | • simple-template-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 240 enum-head-name → • nested-name-specifier-opt IDENTIFIER 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 496 opaque-enum-declaration → enum-key attribute-specifier-seq-opt • enum-head-name enum-base-opt SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 ALIGNAS shift, and go to state 157 OPEN_SQUARE shift, and go to state 161 DECLTYPE shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] alignment-specifier go to state 165 attribute-specifier go to state 166 class-name go to state 55 decltype-specifier go to state 120 enum-head-name go to state 868 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 132 nested-name-specifier-opt go to state 394 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
423 member-specification → member-declaration member-specification-opt • $default reduce using rule 423 (member-specification)
142 class-specifier → class-head OPEN_BRACE member-specification-opt CLOSE_BRACE • $default reduce using rule 142 (class-specifier)
36 access-specifier → • PRIVATE 37 | • PROTECTED 38 | • PUBLIC 45 alignment-specifier → • ALIGNAS OPEN_PAREN type-id ELLIPSIS-opt CLOSE_PAREN 46 | • ALIGNAS OPEN_PAREN constant-expression ELLIPSIS-opt CLOSE_PAREN 80 attribute-specifier → • OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE 81 | • alignment-specifier 82 attribute-specifier-seq → attribute-specifier-seq-opt • attribute-specifier 102 base-specifier → attribute-specifier-seq-opt • class-or-decltype 103 | attribute-specifier-seq-opt • VIRTUAL access-specifier-opt class-or-decltype 104 | attribute-specifier-seq-opt • access-specifier VIRTUAL-opt class-or-decltype 137 class-name → • IDENTIFIER 138 | • simple-template-id 139 class-or-decltype → • nested-name-specifier-opt type-name 140 | • nested-name-specifier TEMPLATE simple-template-id 141 | • decltype-specifier 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 VIRTUAL shift, and go to state 869 PRIVATE shift, and go to state 349 PROTECTED shift, and go to state 350 PUBLIC shift, and go to state 351 ALIGNAS shift, and go to state 157 OPEN_SQUARE shift, and go to state 161 DECLTYPE shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] access-specifier go to state 870 alignment-specifier go to state 165 attribute-specifier go to state 166 class-name go to state 55 class-or-decltype go to state 871 decltype-specifier go to state 872 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 873 nested-name-specifier-opt go to state 874 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
5 ELLIPSIS-opt → • %empty [COMMA, OPEN_BRACE] 6 | • ELLIPSIS 105 base-specifier-list → base-specifier • ELLIPSIS-opt ELLIPSIS shift, and go to state 155 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 875
99 base-clause → COLON base-specifier-list • [OPEN_BRACE] 106 base-specifier-list → base-specifier-list • COMMA base-specifier ELLIPSIS-opt COMMA shift, and go to state 876 $default reduce using rule 99 (base-clause)
143 class-virt-specifier → FINAL • $default reduce using rule 143 (class-virt-specifier)
145 class-virt-specifier-opt → class-virt-specifier • $default reduce using rule 145 (class-virt-specifier-opt)
99 base-clause → • COLON base-specifier-list 100 base-clause-opt → • %empty [OPEN_BRACE] 101 | • base-clause 131 class-head → class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt • base-clause-opt COLON shift, and go to state 370 $default reduce using rule 100 (base-clause-opt) base-clause go to state 371 base-clause-opt go to state 877
137 class-name → IDENTIFIER • [COLON, OPEN_BRACE, FINAL] 229 elaborated-type-specifier → class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER • [COMMA, CONSTEXPR, ELLIPSIS, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TYPENAME, VIRTUAL, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, OPEN_SQUARE, COLON, OPEN_BRACE, CLASS, STRUCT, UNION, AND_AND, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, ENUM, GREATER, EXPLICIT, MULT, REQUIRES, COMPL, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 695 template-name → IDENTIFIER • [LESS] COLON reduce using rule 137 (class-name) COLON [reduce using rule 229 (elaborated-type-specifier)] OPEN_BRACE reduce using rule 137 (class-name) OPEN_BRACE [reduce using rule 229 (elaborated-type-specifier)] FINAL reduce using rule 137 (class-name) LESS reduce using rule 695 (template-name) $default reduce using rule 229 (elaborated-type-specifier)
133 class-head-name → nested-name-specifier-opt class-name • $default reduce using rule 133 (class-head-name)
138 class-name → simple-template-id • $default reduce using rule 138 (class-name)
231 elaborated-type-specifier → class-key nested-name-specifier TEMPLATE-opt simple-template-id • [COMMA, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, PLUS, MINUS, USING, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, ASM, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, OPEN_SQUARE, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, CLASS, STRUCT, UNION, FINAL, SPACESHIP, CONCEPT, QUERY, AND_AND, OR_OR, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, DOT, ENUM, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, EXPLICIT, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR, TRY, IMPORT, NAMESPACE, REQUIRES, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE, OVERRIDE] 457 nested-name-specifier → nested-name-specifier TEMPLATE-opt simple-template-id • SCOPE SCOPE shift, and go to state 671 SCOPE [reduce using rule 231 (elaborated-type-specifier)] $default reduce using rule 231 (elaborated-type-specifier)
361 initializer-clause → assignment-expression • $default reduce using rule 361 (initializer-clause)
362 initializer-clause → braced-init-list • $default reduce using rule 362 (initializer-clause)
116 brace-or-equal-initializer → EQ initializer-clause • $default reduce using rule 116 (brace-or-equal-initializer)
360 initializer → OPEN_PAREN expression-list • CLOSE_PAREN CLOSE_PAREN shift, and go to state 878
5 ELLIPSIS-opt → • %empty [COMMA, CLOSE_PAREN, CLOSE_SQUARE, CLOSE_BRACE] 6 | • ELLIPSIS 363 initializer-list → initializer-clause • ELLIPSIS-opt ELLIPSIS shift, and go to state 155 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 879
279 expression-list → initializer-list • [CLOSE_PAREN, CLOSE_SQUARE] 364 initializer-list → initializer-list • COMMA initializer-clause ELLIPSIS-opt COMMA shift, and go to state 880 $default reduce using rule 279 (expression-list)
122 braced-init-list → OPEN_BRACE CLOSE_BRACE • $default reduce using rule 122 (braced-init-list)
227 designator → DOT • IDENTIFIER IDENTIFIER shift, and go to state 881
225 designated-initializer-list → designated-initializer-clause • $default reduce using rule 225 (designated-initializer-list)
1 COMMA-opt → • %empty [CLOSE_BRACE] 2 | • COMMA 121 braced-init-list → OPEN_BRACE designated-initializer-list • COMMA-opt CLOSE_BRACE 226 designated-initializer-list → designated-initializer-list • COMMA designated-initializer-clause COMMA shift, and go to state 882 $default reduce using rule 1 (COMMA-opt) COMMA-opt go to state 883
116 brace-or-equal-initializer → • EQ initializer-clause 117 | • braced-init-list 120 braced-init-list → • OPEN_BRACE initializer-list COMMA-opt CLOSE_BRACE 121 | • OPEN_BRACE designated-initializer-list COMMA-opt CLOSE_BRACE 122 | • OPEN_BRACE CLOSE_BRACE 224 designated-initializer-clause → designator • brace-or-equal-initializer EQ shift, and go to state 376 OPEN_BRACE shift, and go to state 378 brace-or-equal-initializer go to state 884 braced-init-list go to state 381
1 COMMA-opt → • %empty [CLOSE_BRACE] 2 | • COMMA 120 braced-init-list → OPEN_BRACE initializer-list • COMMA-opt CLOSE_BRACE 364 initializer-list → initializer-list • COMMA initializer-clause ELLIPSIS-opt COMMA shift, and go to state 885 $default reduce using rule 1 (COMMA-opt) COMMA-opt go to state 886
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 277 expression → • assignment-expression 278 | • expression COMMA assignment-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 285 | OPEN_PAREN • cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 286 | OPEN_PAREN • ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | OPEN_PAREN • cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 578 | OPEN_PAREN • expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list ELLIPSIS shift, and go to state 437 IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 await-expression go to state 268 cast-expression go to state 438 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 439 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
163 constraint-logical-and-expression → constraint-logical-and-expression • AND_AND primary-expression 164 constraint-logical-or-expression → constraint-logical-and-expression • [COMMA, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, USING, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, AND, ASM, OPEN_SQUARE, COLON, OPEN_BRACE, CLASS, STRUCT, UNION, CONCEPT, AND_AND, OR_OR, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, ENUM, EXPLICIT, MULT, TRY, IMPORT, NAMESPACE, COMPL, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE] AND_AND shift, and go to state 887 AND_AND [reduce using rule 164 (constraint-logical-or-expression)] $default reduce using rule 164 (constraint-logical-or-expression)
165 constraint-logical-or-expression → constraint-logical-or-expression • OR_OR constraint-logical-and-expression 620 requires-clause → REQUIRES constraint-logical-or-expression • [COMMA, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, USING, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, AND, ASM, OPEN_SQUARE, COLON, OPEN_BRACE, CLASS, STRUCT, UNION, CONCEPT, AND_AND, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, ENUM, EXPLICIT, MULT, TRY, IMPORT, NAMESPACE, COMPL, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE] OR_OR shift, and go to state 888 $default reduce using rule 620 (requires-clause)
162 constraint-logical-and-expression → primary-expression • $default reduce using rule 162 (constraint-logical-and-expression)
351 init-declarator-list → init-declarator-list COMMA init-declarator • $default reduce using rule 351 (init-declarator-list)
45 alignment-specifier → • ALIGNAS OPEN_PAREN type-id ELLIPSIS-opt CLOSE_PAREN 46 | • ALIGNAS OPEN_PAREN constant-expression ELLIPSIS-opt CLOSE_PAREN 80 attribute-specifier → • OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE 81 | • alignment-specifier 82 attribute-specifier-seq → attribute-specifier-seq-opt • attribute-specifier 249 enumerator → IDENTIFIER attribute-specifier-seq-opt • [COMMA, EQ, CLOSE_BRACE] ALIGNAS shift, and go to state 157 OPEN_SQUARE shift, and go to state 161 $default reduce using rule 249 (enumerator) alignment-specifier go to state 165 attribute-specifier go to state 166
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 158 constant-expression → • conditional-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 251 enumerator-definition → enumerator EQ • constant-expression 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 307 constant-expression go to state 889 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 309 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
248 enum-specifier → enum-head OPEN_BRACE enumerator-list COMMA • CLOSE_BRACE 249 enumerator → • IDENTIFIER attribute-specifier-seq-opt 250 enumerator-definition → • enumerator 251 | • enumerator EQ constant-expression 253 enumerator-list → enumerator-list COMMA • enumerator-definition IDENTIFIER shift, and go to state 387 CLOSE_BRACE shift, and go to state 890 enumerator go to state 388 enumerator-definition go to state 891
247 enum-specifier → enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE • $default reduce using rule 247 (enum-specifier)
134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 175 cv-qualifier → • CONST 176 | • VOLATILE 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 236 enum-base → COLON • type-specifier-seq 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 728 type-specifier-seq → • type-specifier attribute-specifier-seq-opt 729 | • type-specifier type-specifier-seq 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 124 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] $default reduce using rule 709 (type-constraint-opt) class-key go to state 404 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 412 type-specifier-seq go to state 892 typedef-name go to state 108 typename-specifier go to state 109
238 enum-base-opt → enum-base • $default reduce using rule 238 (enum-base-opt)
496 opaque-enum-declaration → enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt • SEMICOLON SEMICOLON shift, and go to state 893
239 enum-head → enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt • $default reduce using rule 239 (enum-head)
240 enum-head-name → nested-name-specifier-opt IDENTIFIER • $default reduce using rule 240 (enum-head-name)
215 deduction-guide → explicit-specifier-opt template-name OPEN_PAREN parameter-declaration-clause • CLOSE_PAREN DEREF simple-template-id SEMICOLON CLOSE_PAREN shift, and go to state 894
427 module-declaration → EXPORT-opt MODULE module-name • module-partition-opt attribute-specifier-seq-opt SEMICOLON 436 module-partition → • COLON module-name-qualifier-opt IDENTIFIER 437 module-partition-opt → • %empty [SEMICOLON, ALIGNAS, OPEN_SQUARE] 438 | • module-partition COLON shift, and go to state 137 $default reduce using rule 437 (module-partition-opt) module-partition go to state 895 module-partition-opt go to state 896
583 private-module-fragment → MODULE • COLON PRIVATE SEMICOLON declaration-seq-opt COLON shift, and go to state 897
585 private-module-fragment-opt → private-module-fragment • $default reduce using rule 585 (private-module-fragment-opt)
705 translation-unit → global-module-fragment-opt module-declaration declaration-seq-opt private-module-fragment-opt • $default reduce using rule 705 (translation-unit)
457 nested-name-specifier → nested-name-specifier TEMPLATE-opt simple-template-id SCOPE • $default reduce using rule 457 (nested-name-specifier)
708 type-constraint → nested-name-specifier-opt concept-name LESS template-argument-list-opt • GREATER GREATER shift, and go to state 898
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 150 concept-definition → CONCEPT concept-name EQ • constraint-expression SEMICOLON 161 constraint-expression → • logical-or-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 constraint-expression go to state 899 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 900 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
45 alignment-specifier → • ALIGNAS OPEN_PAREN type-id ELLIPSIS-opt CLOSE_PAREN 46 | • ALIGNAS OPEN_PAREN constant-expression ELLIPSIS-opt CLOSE_PAREN 80 attribute-specifier → • OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE 81 | • alignment-specifier 82 attribute-specifier-seq → attribute-specifier-seq-opt • attribute-specifier 137 class-name → • IDENTIFIER 138 | • simple-template-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 229 elaborated-type-specifier → class-key attribute-specifier-seq-opt • nested-name-specifier-opt IDENTIFIER 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 ALIGNAS shift, and go to state 157 OPEN_SQUARE shift, and go to state 161 DECLTYPE shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] alignment-specifier go to state 165 attribute-specifier go to state 166 class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 132 nested-name-specifier-opt go to state 901 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
685 template-argument-list → template-argument ELLIPSIS-opt • $default reduce using rule 685 (template-argument-list)
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 158 constant-expression → • conditional-expression 169 conversion-function-id → • OPERATOR conversion-type-id 175 cv-qualifier → • CONST 176 | • VOLATILE 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 682 template-argument → • constant-expression 683 | • type-id 684 | • id-expression 686 template-argument-list → template-argument-list COMMA • template-argument ELLIPSIS-opt 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 711 type-id → • type-specifier-seq abstract-declarator-opt 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 728 type-specifier-seq → • type-specifier attribute-specifier-seq-opt 729 | • type-specifier type-specifier-seq 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 OPERATOR shift, and go to state 248 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 124 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-key go to state 404 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 307 constant-expression go to state 405 conversion-function-id go to state 272 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 273 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 406 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 309 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 407 template-argument go to state 902 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 411 type-name go to state 106 type-specifier go to state 412 type-specifier-seq go to state 413 typedef-name go to state 108 typename-specifier go to state 414 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
643 simple-template-id → template-name LESS template-argument-list-opt GREATER • $default reduce using rule 643 (simple-template-id)
45 alignment-specifier → • ALIGNAS OPEN_PAREN type-id ELLIPSIS-opt CLOSE_PAREN 46 | • ALIGNAS OPEN_PAREN constant-expression ELLIPSIS-opt CLOSE_PAREN 80 attribute-specifier → • OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE 81 | • alignment-specifier 82 attribute-specifier-seq → attribute-specifier-seq-opt • attribute-specifier 728 type-specifier-seq → type-specifier attribute-specifier-seq-opt • [COMMA, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, PLUS, MINUS, USING, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, ASM, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, OPEN_SQUARE, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, CLASS, STRUCT, UNION, FINAL, SPACESHIP, CONCEPT, QUERY, AND_AND, OR_OR, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, DOT, ENUM, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, EXPLICIT, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR, TRY, IMPORT, NAMESPACE, REQUIRES, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE, OVERRIDE] ALIGNAS shift, and go to state 157 OPEN_SQUARE shift, and go to state 161 ALIGNAS [reduce using rule 728 (type-specifier-seq)] OPEN_SQUARE [reduce using rule 728 (type-specifier-seq)] $default reduce using rule 728 (type-specifier-seq) alignment-specifier go to state 165 attribute-specifier go to state 166
729 type-specifier-seq → type-specifier type-specifier-seq • $default reduce using rule 729 (type-specifier-seq)
489 noptr-abstract-pack-declarator → ELLIPSIS • $default reduce using rule 489 (noptr-abstract-pack-declarator)
137 class-name → • IDENTIFIER 138 | • simple-template-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 482 noptr-abstract-declarator → • noptr-abstract-declarator-opt parameters-and-qualifiers 483 | • noptr-abstract-declarator-opt OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 484 | • OPEN_PAREN ptr-abstract-declarator CLOSE_PAREN 484 | OPEN_PAREN • ptr-abstract-declarator CLOSE_PAREN 485 noptr-abstract-declarator-opt → • %empty [OPEN_PAREN, OPEN_SQUARE] 486 | • noptr-abstract-declarator 586 ptr-abstract-declarator → • noptr-abstract-declarator 587 | • ptr-operator ptr-abstract-declarator-opt 592 ptr-operator → • MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 593 | • AND attribute-specifier-seq-opt 594 | • AND_AND attribute-specifier-seq-opt 595 | • nested-name-specifier MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 OPEN_PAREN shift, and go to state 681 AND shift, and go to state 159 AND_AND shift, and go to state 162 DECLTYPE shift, and go to state 21 MULT shift, and go to state 163 OPEN_PAREN [reduce using rule 485 (noptr-abstract-declarator-opt)] $default reduce using rule 485 (noptr-abstract-declarator-opt) class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 noptr-abstract-declarator go to state 685 noptr-abstract-declarator-opt go to state 903 ptr-abstract-declarator go to state 904 ptr-operator go to state 905 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
33 abstract-declarator-opt → abstract-declarator • $default reduce using rule 33 (abstract-declarator-opt)
711 type-id → type-specifier-seq abstract-declarator-opt • $default reduce using rule 711 (type-id)
31 abstract-declarator → abstract-pack-declarator • $default reduce using rule 31 (abstract-declarator)
486 noptr-abstract-declarator-opt → noptr-abstract-declarator • [OPEN_PAREN, OPEN_SQUARE] 586 ptr-abstract-declarator → noptr-abstract-declarator • [COMMA, ELLIPSIS, EQ, SEMICOLON, OPEN_PAREN, CLOSE_PAREN, COLON, OPEN_BRACE, FINAL, GREATER, TRY, REQUIRES, OVERRIDE] OPEN_PAREN reduce using rule 486 (noptr-abstract-declarator-opt) OPEN_PAREN [reduce using rule 586 (ptr-abstract-declarator)] OPEN_SQUARE reduce using rule 486 (noptr-abstract-declarator-opt) $default reduce using rule 586 (ptr-abstract-declarator)
30 abstract-declarator → noptr-abstract-declarator-opt • parameters-and-qualifiers trailing-return-type 482 noptr-abstract-declarator → noptr-abstract-declarator-opt • parameters-and-qualifiers 483 | noptr-abstract-declarator-opt • OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 553 parameters-and-qualifiers → • OPEN_PAREN parameter-declaration-clause CLOSE_PAREN cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt OPEN_PAREN shift, and go to state 345 OPEN_SQUARE shift, and go to state 906 parameters-and-qualifiers go to state 907
34 abstract-pack-declarator → noptr-abstract-pack-declarator • [COMMA, ELLIPSIS, EQ, SEMICOLON, OPEN_PAREN, CLOSE_PAREN, COLON, OPEN_BRACE, FINAL, GREATER, TRY, REQUIRES, OVERRIDE] 487 noptr-abstract-pack-declarator → noptr-abstract-pack-declarator • parameters-and-qualifiers 488 | noptr-abstract-pack-declarator • OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 553 parameters-and-qualifiers → • OPEN_PAREN parameter-declaration-clause CLOSE_PAREN cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt OPEN_PAREN shift, and go to state 345 OPEN_SQUARE shift, and go to state 908 OPEN_PAREN [reduce using rule 34 (abstract-pack-declarator)] $default reduce using rule 34 (abstract-pack-declarator) parameters-and-qualifiers go to state 909
29 abstract-declarator → ptr-abstract-declarator • $default reduce using rule 29 (abstract-declarator)
34 abstract-pack-declarator → • noptr-abstract-pack-declarator 35 | • ptr-operator abstract-pack-declarator 35 | ptr-operator • abstract-pack-declarator 137 class-name → • IDENTIFIER 138 | • simple-template-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 482 noptr-abstract-declarator → • noptr-abstract-declarator-opt parameters-and-qualifiers 483 | • noptr-abstract-declarator-opt OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 484 | • OPEN_PAREN ptr-abstract-declarator CLOSE_PAREN 485 noptr-abstract-declarator-opt → • %empty [OPEN_PAREN, OPEN_SQUARE] 486 | • noptr-abstract-declarator 487 noptr-abstract-pack-declarator → • noptr-abstract-pack-declarator parameters-and-qualifiers 488 | • noptr-abstract-pack-declarator OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 489 | • ELLIPSIS 586 ptr-abstract-declarator → • noptr-abstract-declarator 587 | • ptr-operator ptr-abstract-declarator-opt 587 | ptr-operator • ptr-abstract-declarator-opt 588 ptr-abstract-declarator-opt → • %empty [COMMA, ELLIPSIS, EQ, SEMICOLON, OPEN_PAREN, CLOSE_PAREN, COLON, OPEN_BRACE, FINAL, GREATER, TRY, REQUIRES, OVERRIDE] 589 | • ptr-abstract-declarator 592 ptr-operator → • MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 593 | • AND attribute-specifier-seq-opt 594 | • AND_AND attribute-specifier-seq-opt 595 | • nested-name-specifier MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id ELLIPSIS shift, and go to state 680 IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 OPEN_PAREN shift, and go to state 681 AND shift, and go to state 159 AND_AND shift, and go to state 162 DECLTYPE shift, and go to state 21 MULT shift, and go to state 163 ELLIPSIS [reduce using rule 588 (ptr-abstract-declarator-opt)] OPEN_PAREN [reduce using rule 485 (noptr-abstract-declarator-opt)] OPEN_PAREN [reduce using rule 588 (ptr-abstract-declarator-opt)] OPEN_SQUARE reduce using rule 485 (noptr-abstract-declarator-opt) $default reduce using rule 588 (ptr-abstract-declarator-opt) abstract-pack-declarator go to state 910 class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 noptr-abstract-declarator go to state 685 noptr-abstract-declarator-opt go to state 903 noptr-abstract-pack-declarator go to state 687 ptr-abstract-declarator go to state 911 ptr-abstract-declarator-opt go to state 912 ptr-operator go to state 689 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
555 placeholder-type-specifier → type-constraint-opt DECLTYPE OPEN_PAREN AUTO • CLOSE_PAREN CLOSE_PAREN shift, and go to state 913
390 linkage-specification → EXTERN string-literal OPEN_BRACE declaration-seq-opt CLOSE_BRACE • $default reduce using rule 390 (linkage-specification)
5 ELLIPSIS-opt → • %empty [IDENTIFIER, SCOPE, OPERATOR, DECLTYPE, COMPL] 6 | • ELLIPSIS 29 abstract-declarator → • ptr-abstract-declarator 30 | • noptr-abstract-declarator-opt parameters-and-qualifiers trailing-return-type 31 | • abstract-pack-declarator 32 abstract-declarator-opt → • %empty [COMMA, ELLIPSIS, EQ, CLOSE_PAREN, GREATER] 33 | • abstract-declarator 34 abstract-pack-declarator → • noptr-abstract-pack-declarator 35 | • ptr-operator abstract-pack-declarator 137 class-name → • IDENTIFIER 138 | • simple-template-id 211 declarator → • ptr-declarator 212 | • noptr-declarator parameters-and-qualifiers trailing-return-type 213 declarator-id → • ELLIPSIS-opt id-expression 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 482 noptr-abstract-declarator → • noptr-abstract-declarator-opt parameters-and-qualifiers 483 | • noptr-abstract-declarator-opt OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 484 | • OPEN_PAREN ptr-abstract-declarator CLOSE_PAREN 485 noptr-abstract-declarator-opt → • %empty [OPEN_PAREN, OPEN_SQUARE] 486 | • noptr-abstract-declarator 487 noptr-abstract-pack-declarator → • noptr-abstract-pack-declarator parameters-and-qualifiers 488 | • noptr-abstract-pack-declarator OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 489 | • ELLIPSIS 490 noptr-declarator → • declarator-id attribute-specifier-seq-opt 491 | • noptr-declarator parameters-and-qualifiers 492 | • noptr-declarator OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 493 | • OPEN_PAREN ptr-declarator CLOSE_PAREN 543 parameter-declaration → attribute-specifier-seq-opt THIS-opt decl-specifier-seq • declarator 544 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq • declarator EQ initializer-clause 545 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq • abstract-declarator-opt 546 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq • abstract-declarator-opt EQ initializer-clause 586 ptr-abstract-declarator → • noptr-abstract-declarator 587 | • ptr-operator ptr-abstract-declarator-opt 590 ptr-declarator → • noptr-declarator 591 | • ptr-operator ptr-declarator 592 ptr-operator → • MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 593 | • AND attribute-specifier-seq-opt 594 | • AND_AND attribute-specifier-seq-opt 595 | • nested-name-specifier MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id ELLIPSIS shift, and go to state 914 IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 OPEN_PAREN shift, and go to state 915 AND shift, and go to state 159 AND_AND shift, and go to state 162 DECLTYPE shift, and go to state 21 MULT shift, and go to state 163 ELLIPSIS [reduce using rule 32 (abstract-declarator-opt)] IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] SCOPE [reduce using rule 5 (ELLIPSIS-opt)] OPEN_PAREN [reduce using rule 485 (noptr-abstract-declarator-opt)] OPEN_SQUARE reduce using rule 485 (noptr-abstract-declarator-opt) OPERATOR reduce using rule 5 (ELLIPSIS-opt) DECLTYPE [reduce using rule 5 (ELLIPSIS-opt)] COMPL reduce using rule 5 (ELLIPSIS-opt) $default reduce using rule 32 (abstract-declarator-opt) ELLIPSIS-opt go to state 164 abstract-declarator go to state 682 abstract-declarator-opt go to state 916 abstract-pack-declarator go to state 684 class-name go to state 55 declarator go to state 917 declarator-id go to state 170 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 noptr-abstract-declarator go to state 685 noptr-abstract-declarator-opt go to state 686 noptr-abstract-pack-declarator go to state 687 noptr-declarator go to state 172 ptr-abstract-declarator go to state 688 ptr-declarator go to state 173 ptr-operator go to state 918 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
11 IDENTIFIER-opt → • %empty [COMMA, GREATER] 12 | • IDENTIFIER 719 type-parameter → template-head type-parameter-key ELLIPSIS-opt • IDENTIFIER-opt IDENTIFIER shift, and go to state 425 $default reduce using rule 11 (IDENTIFIER-opt) IDENTIFIER-opt go to state 919
720 type-parameter → template-head type-parameter-key IDENTIFIER-opt • EQ id-expression EQ shift, and go to state 920
699 template-parameter-list → template-parameter-list COMMA template-parameter • $default reduce using rule 699 (template-parameter-list)
622 requires-clause-opt → requires-clause • $default reduce using rule 622 (requires-clause-opt)
691 template-head → TEMPLATE LESS template-parameter-list GREATER requires-clause-opt • $default reduce using rule 691 (template-head)
717 type-parameter → type-constraint ELLIPSIS-opt IDENTIFIER-opt • $default reduce using rule 717 (type-parameter)
134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 175 cv-qualifier → • CONST 176 | • VOLATILE 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 711 type-id → • type-specifier-seq abstract-declarator-opt 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 718 type-parameter → type-constraint IDENTIFIER-opt EQ • type-id 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 728 type-specifier-seq → • type-specifier attribute-specifier-seq-opt 729 | • type-specifier type-specifier-seq 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 124 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] $default reduce using rule 709 (type-constraint-opt) class-key go to state 404 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 921 type-name go to state 106 type-specifier go to state 412 type-specifier-seq go to state 413 typedef-name go to state 108 typename-specifier go to state 109
715 type-parameter → type-parameter-key ELLIPSIS-opt IDENTIFIER-opt • $default reduce using rule 715 (type-parameter)
134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 175 cv-qualifier → • CONST 176 | • VOLATILE 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 711 type-id → • type-specifier-seq abstract-declarator-opt 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 716 type-parameter → type-parameter-key IDENTIFIER-opt EQ • type-id 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 728 type-specifier-seq → • type-specifier attribute-specifier-seq-opt 729 | • type-specifier type-specifier-seq 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 124 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] $default reduce using rule 709 (type-constraint-opt) class-key go to state 404 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 922 type-name go to state 106 type-specifier go to state 412 type-specifier-seq go to state 413 typedef-name go to state 108 typename-specifier go to state 109
44 alias-declaration → USING IDENTIFIER attribute-specifier-seq-opt EQ defining-type-id • SEMICOLON SEMICOLON shift, and go to state 923
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [ELLIPSIS, IDENTIFIER, SCOPE, SEMICOLON, ALIGNAS, OPEN_PAREN, AND, OPEN_SQUARE, AND_AND, DECLTYPE, MULT] 84 | • attribute-specifier-seq 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 175 cv-qualifier → • CONST 176 | • VOLATILE 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 220 defining-type-specifier-seq → • defining-type-specifier attribute-specifier-seq-opt 220 | defining-type-specifier • attribute-specifier-seq-opt 221 | • defining-type-specifier defining-type-specifier-seq 221 | defining-type-specifier • defining-type-specifier-seq 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 924 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decltype-specifier go to state 63 defining-type-specifier go to state 703 defining-type-specifier-seq go to state 925 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 153 enum-name go to state 71 enum-specifier go to state 72 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109
29 abstract-declarator → • ptr-abstract-declarator 30 | • noptr-abstract-declarator-opt parameters-and-qualifiers trailing-return-type 31 | • abstract-pack-declarator 32 abstract-declarator-opt → • %empty [SEMICOLON] 33 | • abstract-declarator 34 abstract-pack-declarator → • noptr-abstract-pack-declarator 35 | • ptr-operator abstract-pack-declarator 137 class-name → • IDENTIFIER 138 | • simple-template-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 216 defining-type-id → defining-type-specifier-seq • abstract-declarator-opt 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 482 noptr-abstract-declarator → • noptr-abstract-declarator-opt parameters-and-qualifiers 483 | • noptr-abstract-declarator-opt OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 484 | • OPEN_PAREN ptr-abstract-declarator CLOSE_PAREN 485 noptr-abstract-declarator-opt → • %empty [OPEN_PAREN, OPEN_SQUARE] 486 | • noptr-abstract-declarator 487 noptr-abstract-pack-declarator → • noptr-abstract-pack-declarator parameters-and-qualifiers 488 | • noptr-abstract-pack-declarator OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 489 | • ELLIPSIS 586 ptr-abstract-declarator → • noptr-abstract-declarator 587 | • ptr-operator ptr-abstract-declarator-opt 592 ptr-operator → • MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 593 | • AND attribute-specifier-seq-opt 594 | • AND_AND attribute-specifier-seq-opt 595 | • nested-name-specifier MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id ELLIPSIS shift, and go to state 680 IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 OPEN_PAREN shift, and go to state 681 AND shift, and go to state 159 AND_AND shift, and go to state 162 DECLTYPE shift, and go to state 21 MULT shift, and go to state 163 OPEN_PAREN [reduce using rule 485 (noptr-abstract-declarator-opt)] OPEN_SQUARE reduce using rule 485 (noptr-abstract-declarator-opt) $default reduce using rule 32 (abstract-declarator-opt) abstract-declarator go to state 682 abstract-declarator-opt go to state 926 abstract-pack-declarator go to state 684 class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 noptr-abstract-declarator go to state 685 noptr-abstract-declarator-opt go to state 686 noptr-abstract-pack-declarator go to state 687 ptr-abstract-declarator go to state 688 ptr-operator go to state 689 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
765 using-declarator-list → using-declarator-list COMMA using-declarator ELLIPSIS-opt • $default reduce using rule 765 (using-declarator-list)
278 expression → expression • COMMA assignment-expression 477 noexcept-expression → NOEXCEPT OPEN_PAREN expression • CLOSE_PAREN COMMA shift, and go to state 532 CLOSE_PAREN shift, and go to state 927
317 fold-operator → COMMA • $default reduce using rule 317 (fold-operator)
288 fold-operator → PLUS • $default reduce using rule 288 (fold-operator)
289 fold-operator → MINUS • $default reduce using rule 289 (fold-operator)
308 fold-operator → EQ • $default reduce using rule 308 (fold-operator)
294 fold-operator → AND • $default reduce using rule 294 (fold-operator)
300 fold-operator → MULT_EQ • $default reduce using rule 300 (fold-operator)
301 fold-operator → DIV_EQ • $default reduce using rule 301 (fold-operator)
302 fold-operator → MOD_EQ • $default reduce using rule 302 (fold-operator)
298 fold-operator → PLUS_EQ • $default reduce using rule 298 (fold-operator)
299 fold-operator → MINUS_EQ • $default reduce using rule 299 (fold-operator)
307 fold-operator → RSHIFT_EQ • $default reduce using rule 307 (fold-operator)
306 fold-operator → LSHIFT_EQ • $default reduce using rule 306 (fold-operator)
304 fold-operator → AND_EQ • $default reduce using rule 304 (fold-operator)
303 fold-operator → XOR_EQ • $default reduce using rule 303 (fold-operator)
305 fold-operator → OR_EQ • $default reduce using rule 305 (fold-operator)
315 fold-operator → AND_AND • $default reduce using rule 315 (fold-operator)
316 fold-operator → OR_OR • $default reduce using rule 316 (fold-operator)
309 fold-operator → EQ_EQ • $default reduce using rule 309 (fold-operator)
310 fold-operator → NOT_EQ • $default reduce using rule 310 (fold-operator)
293 fold-operator → XOR • $default reduce using rule 293 (fold-operator)
311 fold-operator → LESS • $default reduce using rule 311 (fold-operator)
312 fold-operator → GREATER • $default reduce using rule 312 (fold-operator)
290 fold-operator → MULT • $default reduce using rule 290 (fold-operator)
291 fold-operator → DIV • $default reduce using rule 291 (fold-operator)
292 fold-operator → MOD • $default reduce using rule 292 (fold-operator)
295 fold-operator → OR • $default reduce using rule 295 (fold-operator)
296 fold-operator → LSHIFT • $default reduce using rule 296 (fold-operator)
297 fold-operator → RSHIFT • $default reduce using rule 297 (fold-operator)
313 fold-operator → LESS_EQ • $default reduce using rule 313 (fold-operator)
314 fold-operator → GREATER_EQ • $default reduce using rule 314 (fold-operator)
318 fold-operator → DOT_STAR • $default reduce using rule 318 (fold-operator)
319 fold-operator → DEREF_STAR • $default reduce using rule 319 (fold-operator)
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 286 | OPEN_PAREN ELLIPSIS fold-operator • cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 await-expression go to state 268 cast-expression go to state 928 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
285 fold-expression → OPEN_PAREN cast-expression fold-operator • ELLIPSIS CLOSE_PAREN 287 | OPEN_PAREN cast-expression fold-operator • ELLIPSIS fold-operator cast-expression CLOSE_PAREN ELLIPSIS shift, and go to state 929
578 primary-expression → OPEN_PAREN expression CLOSE_PAREN • $default reduce using rule 578 (primary-expression)
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 130 | OPEN_PAREN type-id CLOSE_PAREN • cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 await-expression go to state 268 cast-expression go to state 930 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
635 simple-capture → IDENTIFIER ELLIPSIS-opt • $default reduce using rule 635 (simple-capture)
5 ELLIPSIS-opt → • %empty [COMMA, CLOSE_SQUARE] 6 | • ELLIPSIS 636 simple-capture → AND IDENTIFIER • ELLIPSIS-opt ELLIPSIS shift, and go to state 155 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 931
347 init-capture → AND ELLIPSIS-opt • IDENTIFIER initializer IDENTIFIER shift, and go to state 932
638 simple-capture → MULT THIS • $default reduce using rule 638 (simple-capture)
116 brace-or-equal-initializer → • EQ initializer-clause 117 | • braced-init-list 120 braced-init-list → • OPEN_BRACE initializer-list COMMA-opt CLOSE_BRACE 121 | • OPEN_BRACE designated-initializer-list COMMA-opt CLOSE_BRACE 122 | • OPEN_BRACE CLOSE_BRACE 346 init-capture → ELLIPSIS-opt IDENTIFIER • initializer 359 initializer → • brace-or-equal-initializer 360 | • OPEN_PAREN expression-list CLOSE_PAREN EQ shift, and go to state 376 OPEN_PAREN shift, and go to state 377 OPEN_BRACE shift, and go to state 378 brace-or-equal-initializer go to state 380 braced-init-list go to state 381 initializer go to state 933
5 ELLIPSIS-opt → • %empty [IDENTIFIER] 6 | • ELLIPSIS 123 capture → • simple-capture 124 | • init-capture 127 capture-list → • capture 128 | • capture-list COMMA capture 346 init-capture → • ELLIPSIS-opt IDENTIFIER initializer 347 | • AND ELLIPSIS-opt IDENTIFIER initializer 381 lambda-capture → capture-default COMMA • capture-list 635 simple-capture → • IDENTIFIER ELLIPSIS-opt 636 | • AND IDENTIFIER ELLIPSIS-opt 637 | • THIS 638 | • MULT THIS ELLIPSIS shift, and go to state 155 IDENTIFIER shift, and go to state 441 THIS shift, and go to state 442 AND shift, and go to state 934 MULT shift, and go to state 445 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] ELLIPSIS-opt go to state 446 capture go to state 447 capture-list go to state 935 init-capture go to state 450 simple-capture go to state 453
5 ELLIPSIS-opt → • %empty [IDENTIFIER] 6 | • ELLIPSIS 123 capture → • simple-capture 124 | • init-capture 128 capture-list → capture-list COMMA • capture 346 init-capture → • ELLIPSIS-opt IDENTIFIER initializer 347 | • AND ELLIPSIS-opt IDENTIFIER initializer 635 simple-capture → • IDENTIFIER ELLIPSIS-opt 636 | • AND IDENTIFIER ELLIPSIS-opt 637 | • THIS 638 | • MULT THIS ELLIPSIS shift, and go to state 155 IDENTIFIER shift, and go to state 441 THIS shift, and go to state 442 AND shift, and go to state 934 MULT shift, and go to state 445 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] ELLIPSIS-opt go to state 446 capture go to state 936 init-capture go to state 450 simple-capture go to state 453
388 lambda-introducer → OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE • $default reduce using rule 388 (lambda-introducer)
504 overloadable-operator → OPEN_PAREN CLOSE_PAREN • $default reduce using rule 504 (overloadable-operator)
505 overloadable-operator → OPEN_SQUARE CLOSE_SQUARE • $default reduce using rule 505 (overloadable-operator)
502 overloadable-operator → DELETE OPEN_SQUARE • CLOSE_SQUARE CLOSE_SQUARE shift, and go to state 937
501 overloadable-operator → NEW OPEN_SQUARE • CLOSE_SQUARE CLOSE_SQUARE shift, and go to state 938
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 158 constant-expression → • conditional-expression 169 conversion-function-id → • OPERATOR conversion-type-id 175 cv-qualifier → • CONST 176 | • VOLATILE 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 498 | OPERATOR overloadable-operator LESS • template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 682 template-argument → • constant-expression 683 | • type-id 684 | • id-expression 685 template-argument-list → • template-argument ELLIPSIS-opt 686 | • template-argument-list COMMA template-argument ELLIPSIS-opt 687 template-argument-list-opt → • %empty [GREATER] 688 | • template-argument-list 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 711 type-id → • type-specifier-seq abstract-declarator-opt 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 728 type-specifier-seq → • type-specifier attribute-specifier-seq-opt 729 | • type-specifier type-specifier-seq 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 OPERATOR shift, and go to state 248 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 124 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] GREATER reduce using rule 687 (template-argument-list-opt) AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-key go to state 404 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 307 constant-expression go to state 405 conversion-function-id go to state 272 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 273 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 406 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 309 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 407 template-argument go to state 408 template-argument-list go to state 409 template-argument-list-opt go to state 939 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 411 type-name go to state 106 type-specifier go to state 412 type-specifier-seq go to state 413 typedef-name go to state 108 typename-specifier go to state 414 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
392 literal-operator-id → OPERATOR string-literal IDENTIFIER • [COMMA, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, PLUS, MINUS, USING, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, ASM, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, OPEN_SQUARE, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, CLASS, STRUCT, UNION, FINAL, SPACESHIP, CONCEPT, QUERY, AND_AND, OR_OR, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, DOT, ENUM, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, EXPLICIT, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR, TRY, IMPORT, NAMESPACE, REQUIRES, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE, OVERRIDE] 734 ud-suffix → IDENTIFIER • [COMMA, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, PLUS, MINUS, USING, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, ASM, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, OPEN_SQUARE, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, CLASS, STRUCT, UNION, FINAL, SPACESHIP, CONCEPT, QUERY, AND_AND, OR_OR, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, DOT, ENUM, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, EXPLICIT, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR, TRY, IMPORT, NAMESPACE, REQUIRES, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE, OVERRIDE] COMMA reduce using rule 392 (literal-operator-id) COMMA [reduce using rule 734 (ud-suffix)] CONSTEXPR reduce using rule 392 (literal-operator-id) CONSTEXPR [reduce using rule 734 (ud-suffix)] ELLIPSIS reduce using rule 392 (literal-operator-id) ELLIPSIS [reduce using rule 734 (ud-suffix)] EXPORT reduce using rule 392 (literal-operator-id) EXPORT [reduce using rule 734 (ud-suffix)] EXTERN reduce using rule 392 (literal-operator-id) EXTERN [reduce using rule 734 (ud-suffix)] IDENTIFIER reduce using rule 392 (literal-operator-id) IDENTIFIER [reduce using rule 734 (ud-suffix)] INLINE reduce using rule 392 (literal-operator-id) INLINE [reduce using rule 734 (ud-suffix)] NOEXCEPT reduce using rule 392 (literal-operator-id) NOEXCEPT [reduce using rule 734 (ud-suffix)] SCOPE reduce using rule 392 (literal-operator-id) SCOPE [reduce using rule 734 (ud-suffix)] TEMPLATE reduce using rule 392 (literal-operator-id) TEMPLATE [reduce using rule 734 (ud-suffix)] TYPENAME reduce using rule 392 (literal-operator-id) TYPENAME [reduce using rule 734 (ud-suffix)] VIRTUAL reduce using rule 392 (literal-operator-id) VIRTUAL [reduce using rule 734 (ud-suffix)] PLUS reduce using rule 392 (literal-operator-id) PLUS [reduce using rule 734 (ud-suffix)] MINUS reduce using rule 392 (literal-operator-id) MINUS [reduce using rule 734 (ud-suffix)] USING reduce using rule 392 (literal-operator-id) USING [reduce using rule 734 (ud-suffix)] EQ reduce using rule 392 (literal-operator-id) EQ [reduce using rule 734 (ud-suffix)] SEMICOLON reduce using rule 392 (literal-operator-id) SEMICOLON [reduce using rule 734 (ud-suffix)] ALIGNAS reduce using rule 392 (literal-operator-id) ALIGNAS [reduce using rule 734 (ud-suffix)] OPEN_PAREN reduce using rule 392 (literal-operator-id) OPEN_PAREN [reduce using rule 734 (ud-suffix)] CLOSE_PAREN reduce using rule 392 (literal-operator-id) CLOSE_PAREN [reduce using rule 734 (ud-suffix)] AND reduce using rule 392 (literal-operator-id) AND [reduce using rule 734 (ud-suffix)] ASM reduce using rule 392 (literal-operator-id) ASM [reduce using rule 734 (ud-suffix)] MULT_EQ reduce using rule 392 (literal-operator-id) MULT_EQ [reduce using rule 734 (ud-suffix)] DIV_EQ reduce using rule 392 (literal-operator-id) DIV_EQ [reduce using rule 734 (ud-suffix)] MOD_EQ reduce using rule 392 (literal-operator-id) MOD_EQ [reduce using rule 734 (ud-suffix)] PLUS_EQ reduce using rule 392 (literal-operator-id) PLUS_EQ [reduce using rule 734 (ud-suffix)] MINUS_EQ reduce using rule 392 (literal-operator-id) MINUS_EQ [reduce using rule 734 (ud-suffix)] RSHIFT_EQ reduce using rule 392 (literal-operator-id) RSHIFT_EQ [reduce using rule 734 (ud-suffix)] LSHIFT_EQ reduce using rule 392 (literal-operator-id) LSHIFT_EQ [reduce using rule 734 (ud-suffix)] AND_EQ reduce using rule 392 (literal-operator-id) AND_EQ [reduce using rule 734 (ud-suffix)] XOR_EQ reduce using rule 392 (literal-operator-id) XOR_EQ [reduce using rule 734 (ud-suffix)] OR_EQ reduce using rule 392 (literal-operator-id) OR_EQ [reduce using rule 734 (ud-suffix)] OPEN_SQUARE reduce using rule 392 (literal-operator-id) OPEN_SQUARE [reduce using rule 734 (ud-suffix)] CLOSE_SQUARE reduce using rule 392 (literal-operator-id) CLOSE_SQUARE [reduce using rule 734 (ud-suffix)] COLON reduce using rule 392 (literal-operator-id) COLON [reduce using rule 734 (ud-suffix)] OPEN_BRACE reduce using rule 392 (literal-operator-id) OPEN_BRACE [reduce using rule 734 (ud-suffix)] CLOSE_BRACE reduce using rule 392 (literal-operator-id) CLOSE_BRACE [reduce using rule 734 (ud-suffix)] CLASS reduce using rule 392 (literal-operator-id) CLASS [reduce using rule 734 (ud-suffix)] STRUCT reduce using rule 392 (literal-operator-id) STRUCT [reduce using rule 734 (ud-suffix)] UNION reduce using rule 392 (literal-operator-id) UNION [reduce using rule 734 (ud-suffix)] FINAL reduce using rule 392 (literal-operator-id) FINAL [reduce using rule 734 (ud-suffix)] SPACESHIP reduce using rule 392 (literal-operator-id) SPACESHIP [reduce using rule 734 (ud-suffix)] CONCEPT reduce using rule 392 (literal-operator-id) CONCEPT [reduce using rule 734 (ud-suffix)] QUERY reduce using rule 392 (literal-operator-id) QUERY [reduce using rule 734 (ud-suffix)] AND_AND reduce using rule 392 (literal-operator-id) AND_AND [reduce using rule 734 (ud-suffix)] OR_OR reduce using rule 392 (literal-operator-id) OR_OR [reduce using rule 734 (ud-suffix)] OPERATOR reduce using rule 392 (literal-operator-id) OPERATOR [reduce using rule 734 (ud-suffix)] CONST reduce using rule 392 (literal-operator-id) CONST [reduce using rule 734 (ud-suffix)] VOLATILE reduce using rule 392 (literal-operator-id) VOLATILE [reduce using rule 734 (ud-suffix)] FRIEND reduce using rule 392 (literal-operator-id) FRIEND [reduce using rule 734 (ud-suffix)] TYPEDEF reduce using rule 392 (literal-operator-id) TYPEDEF [reduce using rule 734 (ud-suffix)] CONSTEVAL reduce using rule 392 (literal-operator-id) CONSTEVAL [reduce using rule 734 (ud-suffix)] CONSTINIT reduce using rule 392 (literal-operator-id) CONSTINIT [reduce using rule 734 (ud-suffix)] DECLTYPE reduce using rule 392 (literal-operator-id) DECLTYPE [reduce using rule 734 (ud-suffix)] DEREF reduce using rule 392 (literal-operator-id) DEREF [reduce using rule 734 (ud-suffix)] DOT reduce using rule 392 (literal-operator-id) DOT [reduce using rule 734 (ud-suffix)] ENUM reduce using rule 392 (literal-operator-id) ENUM [reduce using rule 734 (ud-suffix)] EQ_EQ reduce using rule 392 (literal-operator-id) EQ_EQ [reduce using rule 734 (ud-suffix)] NOT_EQ reduce using rule 392 (literal-operator-id) NOT_EQ [reduce using rule 734 (ud-suffix)] XOR reduce using rule 392 (literal-operator-id) XOR [reduce using rule 734 (ud-suffix)] LESS reduce using rule 392 (literal-operator-id) LESS [reduce using rule 734 (ud-suffix)] GREATER reduce using rule 392 (literal-operator-id) GREATER [reduce using rule 734 (ud-suffix)] EXPLICIT reduce using rule 392 (literal-operator-id) EXPLICIT [reduce using rule 734 (ud-suffix)] MULT reduce using rule 392 (literal-operator-id) MULT [reduce using rule 734 (ud-suffix)] DIV reduce using rule 392 (literal-operator-id) DIV [reduce using rule 734 (ud-suffix)] MOD reduce using rule 392 (literal-operator-id) MOD [reduce using rule 734 (ud-suffix)] OR reduce using rule 392 (literal-operator-id) OR [reduce using rule 734 (ud-suffix)] LSHIFT reduce using rule 392 (literal-operator-id) LSHIFT [reduce using rule 734 (ud-suffix)] RSHIFT reduce using rule 392 (literal-operator-id) RSHIFT [reduce using rule 734 (ud-suffix)] LESS_EQ reduce using rule 392 (literal-operator-id) LESS_EQ [reduce using rule 734 (ud-suffix)] GREATER_EQ reduce using rule 392 (literal-operator-id) GREATER_EQ [reduce using rule 734 (ud-suffix)] DOT_STAR reduce using rule 392 (literal-operator-id) DOT_STAR [reduce using rule 734 (ud-suffix)] DEREF_STAR reduce using rule 392 (literal-operator-id) DEREF_STAR [reduce using rule 734 (ud-suffix)] TRY reduce using rule 392 (literal-operator-id) TRY [reduce using rule 734 (ud-suffix)] IMPORT reduce using rule 392 (literal-operator-id) IMPORT [reduce using rule 734 (ud-suffix)] NAMESPACE reduce using rule 392 (literal-operator-id) NAMESPACE [reduce using rule 734 (ud-suffix)] REQUIRES reduce using rule 392 (literal-operator-id) REQUIRES [reduce using rule 734 (ud-suffix)] COMPL reduce using rule 392 (literal-operator-id) COMPL [reduce using rule 734 (ud-suffix)] PLUS_PLUS reduce using rule 392 (literal-operator-id) PLUS_PLUS [reduce using rule 734 (ud-suffix)] MINUS_MINUS reduce using rule 392 (literal-operator-id) MINUS_MINUS [reduce using rule 734 (ud-suffix)] AUTO reduce using rule 392 (literal-operator-id) AUTO [reduce using rule 734 (ud-suffix)] CHAR reduce using rule 392 (literal-operator-id) CHAR [reduce using rule 734 (ud-suffix)] CHAR8_T reduce using rule 392 (literal-operator-id) CHAR8_T [reduce using rule 734 (ud-suffix)] CHAR16_T reduce using rule 392 (literal-operator-id) CHAR16_T [reduce using rule 734 (ud-suffix)] CHAR32_T reduce using rule 392 (literal-operator-id) CHAR32_T [reduce using rule 734 (ud-suffix)] WCHAR_T reduce using rule 392 (literal-operator-id) WCHAR_T [reduce using rule 734 (ud-suffix)] BOOL reduce using rule 392 (literal-operator-id) BOOL [reduce using rule 734 (ud-suffix)] SHORT reduce using rule 392 (literal-operator-id) SHORT [reduce using rule 734 (ud-suffix)] INT reduce using rule 392 (literal-operator-id) INT [reduce using rule 734 (ud-suffix)] LONG reduce using rule 392 (literal-operator-id) LONG [reduce using rule 734 (ud-suffix)] SIGNED reduce using rule 392 (literal-operator-id) SIGNED [reduce using rule 734 (ud-suffix)] UNSIGNED reduce using rule 392 (literal-operator-id) UNSIGNED [reduce using rule 734 (ud-suffix)] FLOAT reduce using rule 392 (literal-operator-id) FLOAT [reduce using rule 734 (ud-suffix)] DOUBLE reduce using rule 392 (literal-operator-id) DOUBLE [reduce using rule 734 (ud-suffix)] VOID reduce using rule 392 (literal-operator-id) VOID [reduce using rule 734 (ud-suffix)] STATIC_ASSERT reduce using rule 392 (literal-operator-id) STATIC_ASSERT [reduce using rule 734 (ud-suffix)] STATIC reduce using rule 392 (literal-operator-id) STATIC [reduce using rule 734 (ud-suffix)] THREAD_LOCAL reduce using rule 392 (literal-operator-id) THREAD_LOCAL [reduce using rule 734 (ud-suffix)] MUTABLE reduce using rule 392 (literal-operator-id) MUTABLE [reduce using rule 734 (ud-suffix)] OVERRIDE reduce using rule 392 (literal-operator-id) OVERRIDE [reduce using rule 734 (ud-suffix)] $default reduce using rule 392 (literal-operator-id)
761 user-defined-string-literal → string-literal ud-suffix • $default reduce using rule 761 (user-defined-string-literal)
168 conversion-declarator-opt → conversion-declarator • $default reduce using rule 168 (conversion-declarator-opt)
170 conversion-type-id → type-specifier-seq conversion-declarator-opt • $default reduce using rule 170 (conversion-type-id)
137 class-name → • IDENTIFIER 138 | • simple-template-id 166 conversion-declarator → • ptr-operator conversion-declarator-opt 166 | ptr-operator • conversion-declarator-opt 167 conversion-declarator-opt → • %empty [COMMA, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, PLUS, MINUS, USING, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, ASM, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, OPEN_SQUARE, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, CLASS, STRUCT, UNION, FINAL, SPACESHIP, CONCEPT, QUERY, AND_AND, OR_OR, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, DOT, ENUM, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, EXPLICIT, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR, TRY, IMPORT, NAMESPACE, REQUIRES, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE, OVERRIDE] 168 | • conversion-declarator 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 592 ptr-operator → • MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 593 | • AND attribute-specifier-seq-opt 594 | • AND_AND attribute-specifier-seq-opt 595 | • nested-name-specifier MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 AND shift, and go to state 159 AND_AND shift, and go to state 162 DECLTYPE shift, and go to state 21 MULT shift, and go to state 163 IDENTIFIER [reduce using rule 167 (conversion-declarator-opt)] SCOPE [reduce using rule 167 (conversion-declarator-opt)] AND [reduce using rule 167 (conversion-declarator-opt)] AND_AND [reduce using rule 167 (conversion-declarator-opt)] DECLTYPE [reduce using rule 167 (conversion-declarator-opt)] MULT [reduce using rule 167 (conversion-declarator-opt)] $default reduce using rule 167 (conversion-declarator-opt) class-name go to state 55 conversion-declarator go to state 758 conversion-declarator-opt go to state 940 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 ptr-operator go to state 760 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
615 requirement-parameter-list → OPEN_PAREN parameter-declaration-clause • CLOSE_PAREN CLOSE_PAREN shift, and go to state 941
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 148 compound-requirement → • OPEN_BRACE expression CLOSE_BRACE NOEXCEPT-opt return-type-requirement-opt SEMICOLON 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 277 expression → • assignment-expression 278 | • expression COMMA assignment-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 461 nested-requirement → • REQUIRES constraint-expression SEMICOLON 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 610 requirement → • simple-requirement 611 | • type-requirement 612 | • compound-requirement 613 | • nested-requirement 614 requirement-body → OPEN_BRACE • requirement-seq CLOSE_BRACE 618 requirement-seq → • requirement 619 | • requirement-seq requirement 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 642 simple-requirement → • expression SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 723 type-requirement → • TYPENAME nested-name-specifier-opt type-name SEMICOLON 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 942 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPEN_BRACE shift, and go to state 943 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 944 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 compound-requirement go to state 945 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 946 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 nested-requirement go to state 947 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requirement go to state 948 requirement-seq go to state 949 requires-expression go to state 295 shift-expression go to state 296 simple-requirement go to state 950 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-requirement go to state 951 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
623 requires-expression → REQUIRES requirement-parameter-list-opt requirement-body • $default reduce using rule 623 (requires-expression)
570 postfix-expression → DYNAMIC_CAST LESS type-id • GREATER OPEN_PAREN expression CLOSE_PAREN GREATER shift, and go to state 952
571 postfix-expression → STATIC_CAST LESS type-id • GREATER OPEN_PAREN expression CLOSE_PAREN GREATER shift, and go to state 953
572 postfix-expression → REINTERPRET_CAST LESS type-id • GREATER OPEN_PAREN expression CLOSE_PAREN GREATER shift, and go to state 954
573 postfix-expression → CONST_CAST LESS type-id • GREATER OPEN_PAREN expression CLOSE_PAREN GREATER shift, and go to state 955
278 expression → expression • COMMA assignment-expression 574 postfix-expression → TYPEID OPEN_PAREN expression • CLOSE_PAREN COMMA shift, and go to state 532 CLOSE_PAREN shift, and go to state 956
575 postfix-expression → TYPEID OPEN_PAREN type-id • CLOSE_PAREN CLOSE_PAREN shift, and go to state 957
742 unary-expression → SIZEOF ELLIPSIS OPEN_PAREN • IDENTIFIER CLOSE_PAREN IDENTIFIER shift, and go to state 958
741 unary-expression → SIZEOF OPEN_PAREN type-id • CLOSE_PAREN CLOSE_PAREN shift, and go to state 959
743 unary-expression → ALIGNOF OPEN_PAREN type-id • CLOSE_PAREN CLOSE_PAREN shift, and go to state 960
5 ELLIPSIS-opt → • %empty [IDENTIFIER] 6 | • ELLIPSIS 123 capture → • simple-capture 124 | • init-capture 125 capture-default → • AND 126 | • EQ 127 capture-list → • capture 128 | • capture-list COMMA capture 223 delete-expression → SCOPE-opt DELETE OPEN_SQUARE • CLOSE_SQUARE cast-expression 346 init-capture → • ELLIPSIS-opt IDENTIFIER initializer 347 | • AND ELLIPSIS-opt IDENTIFIER initializer 379 lambda-capture → • capture-default 380 | • capture-list 381 | • capture-default COMMA capture-list 382 lambda-capture-opt → • %empty [CLOSE_SQUARE] 383 | • lambda-capture 388 lambda-introducer → OPEN_SQUARE • lambda-capture-opt CLOSE_SQUARE 635 simple-capture → • IDENTIFIER ELLIPSIS-opt 636 | • AND IDENTIFIER ELLIPSIS-opt 637 | • THIS 638 | • MULT THIS ELLIPSIS shift, and go to state 155 IDENTIFIER shift, and go to state 441 THIS shift, and go to state 442 EQ shift, and go to state 443 AND shift, and go to state 444 CLOSE_SQUARE shift, and go to state 961 MULT shift, and go to state 445 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] CLOSE_SQUARE [reduce using rule 382 (lambda-capture-opt)] ELLIPSIS-opt go to state 446 capture go to state 447 capture-default go to state 448 capture-list go to state 449 init-capture go to state 450 lambda-capture go to state 451 lambda-capture-opt go to state 452 simple-capture go to state 453
222 delete-expression → SCOPE-opt DELETE cast-expression • $default reduce using rule 222 (delete-expression)
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 90 await-expression → • CO_AWAIT cast-expression 120 braced-init-list → • OPEN_BRACE initializer-list COMMA-opt CLOSE_BRACE 121 | • OPEN_BRACE designated-initializer-list COMMA-opt CLOSE_BRACE 122 | • OPEN_BRACE CLOSE_BRACE 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 279 expression-list → • initializer-list 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 361 initializer-clause → • assignment-expression 362 | • braced-init-list 363 initializer-list → • initializer-clause ELLIPSIS-opt 364 | • initializer-list COMMA initializer-clause ELLIPSIS-opt 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 472 new-placement → OPEN_PAREN • expression-list CLOSE_PAREN 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPEN_BRACE shift, and go to state 378 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 640 await-expression go to state 268 braced-init-list go to state 641 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression-list go to state 962 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 initializer-clause go to state 644 initializer-list go to state 645 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
474 new-placement-opt → new-placement • $default reduce using rule 474 (new-placement-opt)
134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 175 cv-qualifier → • CONST 176 | • VOLATILE 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → SCOPE-opt NEW new-placement-opt • new-type-id new-initializer-opt 467 | SCOPE-opt NEW new-placement-opt • OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 475 new-type-id → • type-specifier-seq new-declarator-opt 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 728 type-specifier-seq → • type-specifier attribute-specifier-seq-opt 729 | • type-specifier type-specifier-seq 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 OPEN_PAREN shift, and go to state 963 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 124 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] $default reduce using rule 709 (type-constraint-opt) class-key go to state 404 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 new-type-id go to state 964 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 412 type-specifier-seq go to state 965 typedef-name go to state 108 typename-specifier go to state 109
42 additive-expression → additive-expression PLUS multiplicative-expression • [COMMA, ELLIPSIS, PLUS, MINUS, EQ, SEMICOLON, CLOSE_PAREN, AND, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, SPACESHIP, QUERY, AND_AND, OR_OR, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ] 440 multiplicative-expression → multiplicative-expression • MULT pm-expression 441 | multiplicative-expression • DIV pm-expression 442 | multiplicative-expression • MOD pm-expression MULT shift, and go to state 557 DIV shift, and go to state 558 MOD shift, and go to state 559 $default reduce using rule 42 (additive-expression)
43 additive-expression → additive-expression MINUS multiplicative-expression • [COMMA, ELLIPSIS, PLUS, MINUS, EQ, SEMICOLON, CLOSE_PAREN, AND, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, SPACESHIP, QUERY, AND_AND, OR_OR, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ] 440 multiplicative-expression → multiplicative-expression • MULT pm-expression 441 | multiplicative-expression • DIV pm-expression 442 | multiplicative-expression • MOD pm-expression MULT shift, and go to state 557 DIV shift, and go to state 558 MOD shift, and go to state 559 $default reduce using rule 43 (additive-expression)
48 and-expression → and-expression AND equality-expression • [COMMA, ELLIPSIS, EQ, SEMICOLON, CLOSE_PAREN, AND, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, QUERY, AND_AND, OR_OR, XOR, GREATER, OR] 257 equality-expression → equality-expression • EQ_EQ relational-expression 258 | equality-expression • NOT_EQ relational-expression EQ_EQ shift, and go to state 529 NOT_EQ shift, and go to state 530 $default reduce using rule 48 (and-expression)
147 compare-expression → compare-expression SPACESHIP shift-expression • [COMMA, ELLIPSIS, EQ, SEMICOLON, CLOSE_PAREN, AND, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, SPACESHIP, QUERY, AND_AND, OR_OR, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, OR, LESS_EQ, GREATER_EQ] 633 shift-expression → shift-expression • LSHIFT additive-expression 634 | shift-expression • RSHIFT additive-expression LSHIFT shift, and go to state 574 RSHIFT shift, and go to state 575 $default reduce using rule 147 (compare-expression)
257 equality-expression → equality-expression EQ_EQ relational-expression • [COMMA, ELLIPSIS, EQ, SEMICOLON, CLOSE_PAREN, AND, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, QUERY, AND_AND, OR_OR, EQ_EQ, NOT_EQ, XOR, GREATER, OR] 606 relational-expression → relational-expression • LESS compare-expression 607 | relational-expression • GREATER compare-expression 608 | relational-expression • LESS_EQ compare-expression 609 | relational-expression • GREATER_EQ compare-expression LESS shift, and go to state 570 GREATER shift, and go to state 571 LESS_EQ shift, and go to state 572 GREATER_EQ shift, and go to state 573 GREATER [reduce using rule 257 (equality-expression)] $default reduce using rule 257 (equality-expression)
258 equality-expression → equality-expression NOT_EQ relational-expression • [COMMA, ELLIPSIS, EQ, SEMICOLON, CLOSE_PAREN, AND, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, QUERY, AND_AND, OR_OR, EQ_EQ, NOT_EQ, XOR, GREATER, OR] 606 relational-expression → relational-expression • LESS compare-expression 607 | relational-expression • GREATER compare-expression 608 | relational-expression • LESS_EQ compare-expression 609 | relational-expression • GREATER_EQ compare-expression LESS shift, and go to state 570 GREATER shift, and go to state 571 LESS_EQ shift, and go to state 572 GREATER_EQ shift, and go to state 573 GREATER [reduce using rule 258 (equality-expression)] $default reduce using rule 258 (equality-expression)
48 and-expression → and-expression • AND equality-expression 263 exclusive-or-expression → exclusive-or-expression XOR and-expression • [COMMA, ELLIPSIS, EQ, SEMICOLON, CLOSE_PAREN, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, QUERY, AND_AND, OR_OR, XOR, GREATER, OR] AND shift, and go to state 527 $default reduce using rule 263 (exclusive-or-expression)
278 expression → expression COMMA assignment-expression • $default reduce using rule 278 (expression)
263 exclusive-or-expression → exclusive-or-expression • XOR and-expression 345 inclusive-or-expression → inclusive-or-expression OR exclusive-or-expression • [COMMA, ELLIPSIS, EQ, SEMICOLON, CLOSE_PAREN, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, QUERY, AND_AND, OR_OR, GREATER, OR] XOR shift, and go to state 531 $default reduce using rule 345 (inclusive-or-expression)
385 lambda-declarator → OPEN_PAREN parameter-declaration-clause • CLOSE_PAREN lambda-specifiers requires-clause-opt CLOSE_PAREN shift, and go to state 966
387 lambda-expression → lambda-introducer LESS template-parameter-list • GREATER requires-clause-opt lambda-declarator compound-statement 699 template-parameter-list → template-parameter-list • COMMA template-parameter COMMA shift, and go to state 423 GREATER shift, and go to state 967
478 noexcept-specifier → NOEXCEPT • OPEN_PAREN constant-expression CLOSE_PAREN 479 | NOEXCEPT • [COMMA, ELLIPSIS, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, OPEN_SQUARE, COLON, OPEN_BRACE, FINAL, DEREF, GREATER, TRY, REQUIRES, OVERRIDE] OPEN_PAREN shift, and go to state 968 OPEN_PAREN [reduce using rule 479 (noexcept-specifier)] $default reduce using rule 479 (noexcept-specifier)
481 noexcept-specifier-opt → noexcept-specifier • $default reduce using rule 481 (noexcept-specifier-opt)
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty 84 | • attribute-specifier-seq 389 lambda-specifiers → decl-specifier-seq-opt noexcept-specifier-opt • attribute-specifier-seq-opt trailing-return-type-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 969
44 alias-declaration → • USING IDENTIFIER attribute-specifier-seq-opt EQ defining-type-id SEMICOLON 49 asm-declaration → • attribute-specifier-seq-opt ASM OPEN_PAREN string-literal CLOSE_PAREN SEMICOLON 82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, NOT, SCOPE, THIS, TYPENAME, VIRTUAL, PLUS, MINUS, USING, SEMICOLON, ALIGNAS, OPEN_PAREN, AND, ASM, OPEN_SQUARE, CO_AWAIT, OPEN_BRACE, CLASS, STRUCT, UNION, OPERATOR, CO_RETURN, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DELETE, ENUM, EXPLICIT, MULT, DEFAULT, TRY, WHILE, DO, FOR, BREAK, CONTINUE, RETURN, GOTO, CASE, REQUIRES, NEW, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, DYNAMIC_CAST, STATIC_CAST, REINTERPRET_CAST, CONST_CAST, TYPEID, LITERAL, IF, SWITCH, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE, THROW, SIZEOF, ALIGNOF, CO_YIELD] 84 | • attribute-specifier-seq 107 block-declaration → • simple-declaration 108 | • asm-declaration 109 | • namespace-alias-definition 110 | • using-declaration 111 | • using-enum-declaration 112 | • using-directive 113 | • static_assert-declaration 114 | • alias-declaration 115 | • opaque-enum-declaration 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 149 compound-statement → OPEN_BRACE • statement-seq-opt CLOSE_BRACE 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 210 declaration-statement → • block-declaration 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 376 labeled-statement → • attribute-specifier-seq-opt IDENTIFIER COLON statement 377 | • attribute-specifier-seq-opt CASE constant-expression COLON statement 378 | • attribute-specifier-seq-opt DEFAULT COLON statement 444 namespace-alias → • IDENTIFIER 445 namespace-alias-definition → • NAMESPACE IDENTIFIER EQ qualified-namespace-specifier SEMICOLON 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 496 opaque-enum-declaration → • enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt SEMICOLON 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 639 simple-declaration → • decl-specifier-seq init-declarator-list-opt SEMICOLON 640 | • attribute-specifier-seq decl-specifier-seq init-declarator-list SEMICOLON 641 | • attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE initializer SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 663 statement → • labeled-statement 664 | • attribute-specifier-seq-opt expression-statement 665 | • attribute-specifier-seq-opt compound-statement 666 | • attribute-specifier-seq-opt selection-statement 667 | • attribute-specifier-seq-opt iteration-statement 668 | • attribute-specifier-seq-opt jump-statement 669 | • declaration-statement 670 | • attribute-specifier-seq-opt try-block 671 statement-seq → • statement 672 | • statement-seq statement 673 statement-seq-opt → • %empty [CLOSE_BRACE] 674 | • statement-seq 675 static_assert-declaration → • STATIC_ASSERT OPEN_PAREN constant-expression CLOSE_PAREN SEMICOLON 676 | • STATIC_ASSERT OPEN_PAREN constant-expression COMMA string-literal CLOSE_PAREN SEMICOLON 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 762 using-declaration → • USING using-declarator-list SEMICOLON 766 using-directive → • attribute-specifier-seq-opt USING NAMESPACE nested-name-specifier-opt namespace-name SEMICOLON 767 using-enum-declaration → • USING elaborated-enum-specifier SEMICOLON CONSTEXPR shift, and go to state 1 EXTERN shift, and go to state 149 IDENTIFIER shift, and go to state 4 INLINE shift, and go to state 150 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 USING shift, and go to state 10 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 NAMESPACE shift, and go to state 970 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC_ASSERT shift, and go to state 41 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 CONSTEXPR [reduce using rule 83 (attribute-specifier-seq-opt)] EXTERN [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] INLINE [reduce using rule 83 (attribute-specifier-seq-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] VIRTUAL [reduce using rule 83 (attribute-specifier-seq-opt)] USING [reduce using rule 83 (attribute-specifier-seq-opt)] CLOSE_BRACE reduce using rule 673 (statement-seq-opt) CLASS [reduce using rule 83 (attribute-specifier-seq-opt)] STRUCT [reduce using rule 83 (attribute-specifier-seq-opt)] UNION [reduce using rule 83 (attribute-specifier-seq-opt)] CONST [reduce using rule 83 (attribute-specifier-seq-opt)] VOLATILE [reduce using rule 83 (attribute-specifier-seq-opt)] FRIEND [reduce using rule 83 (attribute-specifier-seq-opt)] TYPEDEF [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTEVAL [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTINIT [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] ENUM [reduce using rule 83 (attribute-specifier-seq-opt)] EXPLICIT [reduce using rule 83 (attribute-specifier-seq-opt)] AUTO reduce using rule 83 (attribute-specifier-seq-opt) AUTO [reduce using rule 709 (type-constraint-opt)] CHAR [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR8_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR16_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR32_T [reduce using rule 83 (attribute-specifier-seq-opt)] WCHAR_T [reduce using rule 83 (attribute-specifier-seq-opt)] BOOL [reduce using rule 83 (attribute-specifier-seq-opt)] SHORT [reduce using rule 83 (attribute-specifier-seq-opt)] INT [reduce using rule 83 (attribute-specifier-seq-opt)] LONG [reduce using rule 83 (attribute-specifier-seq-opt)] SIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] UNSIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] FLOAT [reduce using rule 83 (attribute-specifier-seq-opt)] DOUBLE [reduce using rule 83 (attribute-specifier-seq-opt)] VOID [reduce using rule 83 (attribute-specifier-seq-opt)] STATIC [reduce using rule 83 (attribute-specifier-seq-opt)] THREAD_LOCAL [reduce using rule 83 (attribute-specifier-seq-opt)] MUTABLE [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 971 attribute-specifier-seq-opt go to state 972 block-declaration go to state 973 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 974 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 labeled-statement go to state 975 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 976 statement-seq go to state 977 statement-seq-opt go to state 978 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113
386 lambda-expression → lambda-introducer lambda-declarator compound-statement • $default reduce using rule 386 (lambda-expression)
694 template-id → literal-operator-id LESS template-argument-list-opt • GREATER GREATER shift, and go to state 979
345 inclusive-or-expression → inclusive-or-expression • OR exclusive-or-expression 395 logical-and-expression → logical-and-expression AND_AND inclusive-or-expression • [COMMA, ELLIPSIS, EQ, SEMICOLON, CLOSE_PAREN, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, QUERY, AND_AND, OR_OR, GREATER] OR shift, and go to state 534 $default reduce using rule 395 (logical-and-expression)
157 conditional-expression → logical-or-expression QUERY expression • COLON assignment-expression 278 expression → expression • COMMA assignment-expression COMMA shift, and go to state 532 COLON shift, and go to state 980
395 logical-and-expression → logical-and-expression • AND_AND inclusive-or-expression 397 logical-or-expression → logical-or-expression OR_OR logical-and-expression • [COMMA, ELLIPSIS, EQ, SEMICOLON, CLOSE_PAREN, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, QUERY, OR_OR, GREATER] AND_AND shift, and go to state 542 $default reduce using rule 397 (logical-or-expression)
53 assignment-expression → logical-or-expression assignment-operator initializer-clause • $default reduce using rule 53 (assignment-expression)
440 multiplicative-expression → multiplicative-expression MULT pm-expression • [COMMA, ELLIPSIS, PLUS, MINUS, EQ, SEMICOLON, CLOSE_PAREN, AND, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, SPACESHIP, QUERY, AND_AND, OR_OR, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ] 557 pm-expression → pm-expression • DOT_STAR cast-expression 558 | pm-expression • DEREF_STAR cast-expression DOT_STAR shift, and go to state 562 DEREF_STAR shift, and go to state 563 $default reduce using rule 440 (multiplicative-expression)
441 multiplicative-expression → multiplicative-expression DIV pm-expression • [COMMA, ELLIPSIS, PLUS, MINUS, EQ, SEMICOLON, CLOSE_PAREN, AND, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, SPACESHIP, QUERY, AND_AND, OR_OR, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ] 557 pm-expression → pm-expression • DOT_STAR cast-expression 558 | pm-expression • DEREF_STAR cast-expression DOT_STAR shift, and go to state 562 DEREF_STAR shift, and go to state 563 $default reduce using rule 441 (multiplicative-expression)
442 multiplicative-expression → multiplicative-expression MOD pm-expression • [COMMA, ELLIPSIS, PLUS, MINUS, EQ, SEMICOLON, CLOSE_PAREN, AND, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, SPACESHIP, QUERY, AND_AND, OR_OR, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ] 557 pm-expression → pm-expression • DOT_STAR cast-expression 558 | pm-expression • DEREF_STAR cast-expression DOT_STAR shift, and go to state 562 DEREF_STAR shift, and go to state 563 $default reduce using rule 442 (multiplicative-expression)
695 template-name → IDENTIFIER • [LESS] 754 unqualified-id → IDENTIFIER • [COMMA, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, PLUS, MINUS, USING, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, ASM, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, OPEN_SQUARE, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, CLASS, STRUCT, UNION, FINAL, SPACESHIP, CONCEPT, QUERY, AND_AND, OR_OR, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, DOT, ENUM, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, EXPLICIT, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR, TRY, IMPORT, NAMESPACE, REQUIRES, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE, OVERRIDE] LESS reduce using rule 695 (template-name) LESS [reduce using rule 754 (unqualified-id)] $default reduce using rule 754 (unqualified-id)
457 nested-name-specifier → nested-name-specifier TEMPLATE-opt simple-template-id • SCOPE 692 template-id → simple-template-id • [COMMA, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, PLUS, MINUS, USING, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, ASM, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, OPEN_SQUARE, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, CLASS, STRUCT, UNION, FINAL, SPACESHIP, CONCEPT, QUERY, AND_AND, OR_OR, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, DOT, ENUM, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, EXPLICIT, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR, TRY, IMPORT, NAMESPACE, REQUIRES, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE, OVERRIDE] SCOPE shift, and go to state 671 SCOPE [reduce using rule 692 (template-id)] $default reduce using rule 692 (template-id)
599 qualified-id → nested-name-specifier TEMPLATE-opt unqualified-id • $default reduce using rule 599 (qualified-id)
693 template-id → operator-function-id LESS template-argument-list-opt • GREATER GREATER shift, and go to state 981
557 pm-expression → pm-expression DOT_STAR cast-expression • $default reduce using rule 557 (pm-expression)
558 pm-expression → pm-expression DEREF_STAR cast-expression • $default reduce using rule 558 (pm-expression)
281 expression-list-opt → expression-list • $default reduce using rule 281 (expression-list-opt)
561 postfix-expression → postfix-expression OPEN_PAREN expression-list-opt • CLOSE_PAREN CLOSE_PAREN shift, and go to state 982
560 postfix-expression → postfix-expression OPEN_SQUARE expression-list-opt • CLOSE_SQUARE CLOSE_SQUARE shift, and go to state 983
137 class-name → • IDENTIFIER 138 | • simple-template-id 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 340 id-expression → • unqualified-id 341 | • qualified-id 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 567 postfix-expression → postfix-expression DEREF TEMPLATE-opt • id-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 SCOPE shift, and go to state 6 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 COMPL shift, and go to state 334 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 120 enum-name go to state 71 id-expression go to state 984 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 336 operator-function-id go to state 289 qualified-id go to state 293 simple-template-id go to state 297 template-id go to state 299 template-name go to state 102 type-name go to state 106 typedef-name go to state 108 unqualified-id go to state 304
137 class-name → • IDENTIFIER 138 | • simple-template-id 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 340 id-expression → • unqualified-id 341 | • qualified-id 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 566 postfix-expression → postfix-expression DOT TEMPLATE-opt • id-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 SCOPE shift, and go to state 6 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 COMPL shift, and go to state 334 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 120 enum-name go to state 71 id-expression go to state 985 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 336 operator-function-id go to state 289 qualified-id go to state 293 simple-template-id go to state 297 template-id go to state 299 template-name go to state 102 type-name go to state 106 typedef-name go to state 108 unqualified-id go to state 304
147 compare-expression → compare-expression • SPACESHIP shift-expression 606 relational-expression → relational-expression LESS compare-expression • [COMMA, ELLIPSIS, EQ, SEMICOLON, CLOSE_PAREN, AND, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, QUERY, AND_AND, OR_OR, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, OR, LESS_EQ, GREATER_EQ] SPACESHIP shift, and go to state 528 $default reduce using rule 606 (relational-expression)
147 compare-expression → compare-expression • SPACESHIP shift-expression 607 relational-expression → relational-expression GREATER compare-expression • [COMMA, ELLIPSIS, EQ, SEMICOLON, CLOSE_PAREN, AND, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, QUERY, AND_AND, OR_OR, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, OR, LESS_EQ, GREATER_EQ] SPACESHIP shift, and go to state 528 $default reduce using rule 607 (relational-expression)
147 compare-expression → compare-expression • SPACESHIP shift-expression 608 relational-expression → relational-expression LESS_EQ compare-expression • [COMMA, ELLIPSIS, EQ, SEMICOLON, CLOSE_PAREN, AND, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, QUERY, AND_AND, OR_OR, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, OR, LESS_EQ, GREATER_EQ] SPACESHIP shift, and go to state 528 $default reduce using rule 608 (relational-expression)
147 compare-expression → compare-expression • SPACESHIP shift-expression 609 relational-expression → relational-expression GREATER_EQ compare-expression • [COMMA, ELLIPSIS, EQ, SEMICOLON, CLOSE_PAREN, AND, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, QUERY, AND_AND, OR_OR, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, OR, LESS_EQ, GREATER_EQ] SPACESHIP shift, and go to state 528 $default reduce using rule 609 (relational-expression)
42 additive-expression → additive-expression • PLUS multiplicative-expression 43 | additive-expression • MINUS multiplicative-expression 633 shift-expression → shift-expression LSHIFT additive-expression • [COMMA, ELLIPSIS, EQ, SEMICOLON, CLOSE_PAREN, AND, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, SPACESHIP, QUERY, AND_AND, OR_OR, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ] PLUS shift, and go to state 525 MINUS shift, and go to state 526 $default reduce using rule 633 (shift-expression)
42 additive-expression → additive-expression • PLUS multiplicative-expression 43 | additive-expression • MINUS multiplicative-expression 634 shift-expression → shift-expression RSHIFT additive-expression • [COMMA, ELLIPSIS, EQ, SEMICOLON, CLOSE_PAREN, AND, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, SPACESHIP, QUERY, AND_AND, OR_OR, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ] PLUS shift, and go to state 525 MINUS shift, and go to state 526 $default reduce using rule 634 (shift-expression)
562 postfix-expression → simple-type-specifier OPEN_PAREN expression-list-opt • CLOSE_PAREN CLOSE_PAREN shift, and go to state 986
563 postfix-expression → typename-specifier OPEN_PAREN expression-list-opt • CLOSE_PAREN CLOSE_PAREN shift, and go to state 987
444 namespace-alias → IDENTIFIER • [SEMICOLON] 450 namespace-name → IDENTIFIER • [SEMICOLON] SEMICOLON reduce using rule 444 (namespace-alias) SEMICOLON [reduce using rule 450 (namespace-name)] $default reduce using rule 444 (namespace-alias)
600 qualified-namespace-specifier → nested-name-specifier-opt namespace-name • $default reduce using rule 600 (qualified-namespace-specifier)
445 namespace-alias-definition → NAMESPACE IDENTIFIER EQ qualified-namespace-specifier SEMICOLON • $default reduce using rule 445 (namespace-alias-definition)
235 enclosing-namespace-specifier → enclosing-namespace-specifier SCOPE INLINE-opt IDENTIFIER • [SCOPE] 460 nested-namespace-definition → NAMESPACE enclosing-namespace-specifier SCOPE INLINE-opt IDENTIFIER • OPEN_BRACE namespace-body CLOSE_BRACE OPEN_BRACE shift, and go to state 988 $default reduce using rule 235 (enclosing-namespace-specifier)
676 static_assert-declaration → STATIC_ASSERT OPEN_PAREN constant-expression COMMA string-literal • CLOSE_PAREN SEMICOLON CLOSE_PAREN shift, and go to state 989
675 static_assert-declaration → STATIC_ASSERT OPEN_PAREN constant-expression CLOSE_PAREN SEMICOLON • $default reduce using rule 675 (static_assert-declaration)
9 EXTERN-opt → • %empty [TEMPLATE] 10 | • EXTERN 13 INLINE-opt → • %empty [NAMESPACE] 14 | • INLINE 44 alias-declaration → • USING IDENTIFIER attribute-specifier-seq-opt EQ defining-type-id SEMICOLON 49 asm-declaration → • attribute-specifier-seq-opt ASM OPEN_PAREN string-literal CLOSE_PAREN SEMICOLON 71 attribute-declaration → • attribute-specifier-seq SEMICOLON 82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, ELLIPSIS, EXTERN, IDENTIFIER, INLINE, SCOPE, TYPENAME, VIRTUAL, USING, ALIGNAS, OPEN_PAREN, AND, ASM, OPEN_SQUARE, CLASS, STRUCT, UNION, AND_AND, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, MULT, COMPL, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 84 | • attribute-specifier-seq 107 block-declaration → • simple-declaration 108 | • asm-declaration 109 | • namespace-alias-definition 110 | • using-declaration 111 | • using-enum-declaration 112 | • using-directive 113 | • static_assert-declaration 114 | • alias-declaration 115 | • opaque-enum-declaration 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 193 declaration → • block-declaration 194 | • nodeclspec-function-declaration 195 | • function-definition 196 | • template-declaration 197 | • deduction-guide 198 | • explicit-instantiation 199 | • explicit-specialization 200 | • export-declaration 201 | • linkage-specification 202 | • namespace-definition 203 | • empty-declaration 204 | • attribute-declaration 205 | • module-import-declaration 206 declaration-seq → • declaration 207 | • declaration-seq declaration 208 declaration-seq-opt → • %empty [CLOSE_BRACE] 209 | • declaration-seq 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 215 deduction-guide → • explicit-specifier-opt template-name OPEN_PAREN parameter-declaration-clause CLOSE_PAREN DEREF simple-template-id SEMICOLON 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 233 empty-declaration → • SEMICOLON 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 264 explicit-instantiation → • EXTERN-opt TEMPLATE declaration 265 explicit-specialization → • TEMPLATE LESS GREATER declaration 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 268 explicit-specifier-opt → • %empty [IDENTIFIER] 269 | • explicit-specifier 270 export-declaration → • EXPORT declaration 271 | • EXPORT OPEN_BRACE declaration-seq-opt CLOSE_BRACE 272 | • EXPORT module-import-declaration 327 function-definition → • attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | • attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 390 linkage-specification → • EXTERN string-literal OPEN_BRACE declaration-seq-opt CLOSE_BRACE 391 | • EXTERN string-literal declaration 428 module-import-declaration → • IMPORT module-name attribute-specifier-seq-opt SEMICOLON 429 | • IMPORT module-partition attribute-specifier-seq-opt SEMICOLON 430 | • IMPORT header-name attribute-specifier-seq-opt SEMICOLON 443 named-namespace-definition → • INLINE-opt NAMESPACE attribute-specifier-seq-opt IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE 443 | INLINE-opt NAMESPACE attribute-specifier-seq-opt IDENTIFIER OPEN_BRACE • namespace-body CLOSE_BRACE 444 namespace-alias → • IDENTIFIER 445 namespace-alias-definition → • NAMESPACE IDENTIFIER EQ qualified-namespace-specifier SEMICOLON 446 namespace-body → • declaration-seq-opt 447 namespace-definition → • named-namespace-definition 448 | • unnamed-namespace-definition 449 | • nested-namespace-definition 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 460 nested-namespace-definition → • NAMESPACE enclosing-namespace-specifier SCOPE INLINE-opt IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE 476 nodeclspec-function-declaration → • attribute-specifier-seq-opt declarator SEMICOLON 496 opaque-enum-declaration → • enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt SEMICOLON 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 639 simple-declaration → • decl-specifier-seq init-declarator-list-opt SEMICOLON 640 | • attribute-specifier-seq decl-specifier-seq init-declarator-list SEMICOLON 641 | • attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE initializer SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 675 static_assert-declaration → • STATIC_ASSERT OPEN_PAREN constant-expression CLOSE_PAREN SEMICOLON 676 | • STATIC_ASSERT OPEN_PAREN constant-expression COMMA string-literal CLOSE_PAREN SEMICOLON 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 689 template-declaration → • template-head declaration 690 | • template-head concept-definition 691 template-head → • TEMPLATE LESS template-parameter-list GREATER requires-clause-opt 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 753 unnamed-namespace-definition → • INLINE-opt NAMESPACE attribute-specifier-seq-opt OPEN_BRACE namespace-body CLOSE_BRACE 762 using-declaration → • USING using-declarator-list SEMICOLON 766 using-directive → • attribute-specifier-seq-opt USING NAMESPACE nested-name-specifier-opt namespace-name SEMICOLON 767 using-enum-declaration → • USING elaborated-enum-specifier SEMICOLON CONSTEXPR shift, and go to state 1 EXPORT shift, and go to state 2 EXTERN shift, and go to state 3 IDENTIFIER shift, and go to state 4 INLINE shift, and go to state 5 SCOPE shift, and go to state 6 TEMPLATE shift, and go to state 7 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 USING shift, and go to state 10 SEMICOLON shift, and go to state 11 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 IMPORT shift, and go to state 25 NAMESPACE shift, and go to state 26 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC_ASSERT shift, and go to state 41 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 CONSTEXPR [reduce using rule 83 (attribute-specifier-seq-opt)] EXTERN [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] INLINE [reduce using rule 83 (attribute-specifier-seq-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] TEMPLATE [reduce using rule 9 (EXTERN-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] VIRTUAL [reduce using rule 83 (attribute-specifier-seq-opt)] USING [reduce using rule 83 (attribute-specifier-seq-opt)] CLOSE_BRACE reduce using rule 208 (declaration-seq-opt) CLASS [reduce using rule 83 (attribute-specifier-seq-opt)] STRUCT [reduce using rule 83 (attribute-specifier-seq-opt)] UNION [reduce using rule 83 (attribute-specifier-seq-opt)] CONST [reduce using rule 83 (attribute-specifier-seq-opt)] VOLATILE [reduce using rule 83 (attribute-specifier-seq-opt)] FRIEND [reduce using rule 83 (attribute-specifier-seq-opt)] TYPEDEF [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTEVAL [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTINIT [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] ENUM [reduce using rule 83 (attribute-specifier-seq-opt)] EXPLICIT [reduce using rule 83 (attribute-specifier-seq-opt)] NAMESPACE [reduce using rule 13 (INLINE-opt)] AUTO reduce using rule 83 (attribute-specifier-seq-opt) AUTO [reduce using rule 709 (type-constraint-opt)] CHAR [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR8_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR16_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR32_T [reduce using rule 83 (attribute-specifier-seq-opt)] WCHAR_T [reduce using rule 83 (attribute-specifier-seq-opt)] BOOL [reduce using rule 83 (attribute-specifier-seq-opt)] SHORT [reduce using rule 83 (attribute-specifier-seq-opt)] INT [reduce using rule 83 (attribute-specifier-seq-opt)] LONG [reduce using rule 83 (attribute-specifier-seq-opt)] SIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] UNSIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] FLOAT [reduce using rule 83 (attribute-specifier-seq-opt)] DOUBLE [reduce using rule 83 (attribute-specifier-seq-opt)] VOID [reduce using rule 83 (attribute-specifier-seq-opt)] STATIC [reduce using rule 83 (attribute-specifier-seq-opt)] THREAD_LOCAL [reduce using rule 83 (attribute-specifier-seq-opt)] MUTABLE [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 60 declaration-seq go to state 61 declaration-seq-opt go to state 828 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-body go to state 990 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113
446 namespace-body → declaration-seq-opt • $default reduce using rule 446 (namespace-body)
753 unnamed-namespace-definition → INLINE-opt NAMESPACE attribute-specifier-seq-opt OPEN_BRACE namespace-body • CLOSE_BRACE CLOSE_BRACE shift, and go to state 991
766 using-directive → attribute-specifier-seq-opt USING NAMESPACE nested-name-specifier-opt namespace-name • SEMICOLON SEMICOLON shift, and go to state 992
46 alignment-specifier → ALIGNAS OPEN_PAREN constant-expression ELLIPSIS-opt • CLOSE_PAREN CLOSE_PAREN shift, and go to state 993
45 alignment-specifier → ALIGNAS OPEN_PAREN type-id ELLIPSIS-opt • CLOSE_PAREN CLOSE_PAREN shift, and go to state 994
49 asm-declaration → attribute-specifier-seq-opt ASM OPEN_PAREN string-literal CLOSE_PAREN • SEMICOLON SEMICOLON shift, and go to state 995
76 attribute-namespace → IDENTIFIER • $default reduce using rule 76 (attribute-namespace)
87 attribute-using-prefix → USING attribute-namespace • COLON COLON shift, and go to state 996
76 attribute-namespace → IDENTIFIER • [SCOPE] 85 attribute-token → IDENTIFIER • [COMMA, ELLIPSIS, OPEN_PAREN, CLOSE_SQUARE] SCOPE reduce using rule 76 (attribute-namespace) $default reduce using rule 85 (attribute-token)
74 attribute-list → attribute • ELLIPSIS 78 attribute-opt → attribute • [COMMA, CLOSE_SQUARE] ELLIPSIS shift, and go to state 997 $default reduce using rule 78 (attribute-opt)
73 attribute-list → attribute-list • COMMA attribute-opt 75 | attribute-list • COMMA attribute ELLIPSIS 80 attribute-specifier → OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list • CLOSE_SQUARE CLOSE_SQUARE COMMA shift, and go to state 998 CLOSE_SQUARE shift, and go to state 999
79 attribute-scoped-token → attribute-namespace • SCOPE IDENTIFIER SCOPE shift, and go to state 1000
72 attribute-list → attribute-opt • $default reduce using rule 72 (attribute-list)
86 attribute-token → attribute-scoped-token • $default reduce using rule 86 (attribute-token)
67 attribute → attribute-token • attribute-argument-clause-opt 68 attribute-argument-clause → • OPEN_PAREN balanced-token-seq-opt CLOSE_PAREN 69 attribute-argument-clause-opt → • %empty [COMMA, ELLIPSIS, CLOSE_SQUARE] 70 | • attribute-argument-clause OPEN_PAREN shift, and go to state 1001 $default reduce using rule 69 (attribute-argument-clause-opt) attribute-argument-clause go to state 1002 attribute-argument-clause-opt go to state 1003
177 cv-qualifier-seq → cv-qualifier cv-qualifier-seq-opt • $default reduce using rule 177 (cv-qualifier-seq)
342 identifier-list → IDENTIFIER • $default reduce using rule 342 (identifier-list)
343 identifier-list → identifier-list • COMMA IDENTIFIER 641 simple-declaration → attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list • CLOSE_SQUARE initializer SEMICOLON COMMA shift, and go to state 1004 CLOSE_SQUARE shift, and go to state 1005
325 function-body → EQ • DEFAULT SEMICOLON 326 | EQ • DELETE SEMICOLON DELETE shift, and go to state 1006 DEFAULT shift, and go to state 1007
137 class-name → • IDENTIFIER 138 | • simple-template-id 139 class-or-decltype → • nested-name-specifier-opt type-name 140 | • nested-name-specifier TEMPLATE simple-template-id 141 | • decltype-specifier 172 ctor-initializer → COLON • mem-initializer-list 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 398 mem-initializer → • mem-initializer-id OPEN_PAREN expression-list-opt CLOSE_PAREN 399 | • mem-initializer-id braced-init-list 400 mem-initializer-id → • class-or-decltype 401 | • IDENTIFIER 402 mem-initializer-list → • mem-initializer ELLIPSIS-opt 403 | • mem-initializer-list COMMA mem-initializer ELLIPSIS-opt 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id IDENTIFIER shift, and go to state 1008 SCOPE shift, and go to state 6 DECLTYPE shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] class-name go to state 55 class-or-decltype go to state 1009 decltype-specifier go to state 872 enum-name go to state 71 mem-initializer go to state 1010 mem-initializer-id go to state 1011 mem-initializer-list go to state 1012 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 873 nested-name-specifier-opt go to state 874 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
172 ctor-initializer → • COLON mem-initializer-list 173 ctor-initializer-opt → • %empty [OPEN_BRACE] 174 | • ctor-initializer 331 function-try-block → TRY • ctor-initializer-opt compound-statement handler-seq COLON shift, and go to state 847 $default reduce using rule 173 (ctor-initializer-opt) ctor-initializer go to state 849 ctor-initializer-opt go to state 1013
174 ctor-initializer-opt → ctor-initializer • $default reduce using rule 174 (ctor-initializer-opt)
149 compound-statement → • OPEN_BRACE statement-seq-opt CLOSE_BRACE 323 function-body → ctor-initializer-opt • compound-statement OPEN_BRACE shift, and go to state 792 compound-statement go to state 1014
328 function-definition → attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body • $default reduce using rule 328 (function-definition)
324 function-body → function-try-block • $default reduce using rule 324 (function-body)
771 virt-specifier-seq → virt-specifier-seq virt-specifier • $default reduce using rule 771 (virt-specifier-seq)
327 function-definition → attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body • $default reduce using rule 327 (function-definition)
595 ptr-operator → nested-name-specifier MULT attribute-specifier-seq-opt cv-qualifier-seq-opt • $default reduce using rule 595 (ptr-operator)
175 cv-qualifier → • CONST 176 | • VOLATILE 177 cv-qualifier-seq → • cv-qualifier cv-qualifier-seq-opt 178 cv-qualifier-seq-opt → • %empty [COMMA, ELLIPSIS, NOEXCEPT, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, AND, OPEN_SQUARE, COLON, OPEN_BRACE, FINAL, AND_AND, DEREF, GREATER, TRY, REQUIRES, OVERRIDE] 179 | • cv-qualifier-seq 553 parameters-and-qualifiers → OPEN_PAREN parameter-declaration-clause CLOSE_PAREN • cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt CONST shift, and go to state 15 VOLATILE shift, and go to state 16 $default reduce using rule 178 (cv-qualifier-seq-opt) cv-qualifier go to state 606 cv-qualifier-seq go to state 607 cv-qualifier-seq-opt go to state 1015
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, EXTERN, IDENTIFIER, INLINE, SCOPE, THIS, TYPENAME, VIRTUAL, ALIGNAS, OPEN_SQUARE, CLASS, STRUCT, UNION, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 84 | • attribute-specifier-seq 543 parameter-declaration → • attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 544 | • attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator EQ initializer-clause 545 | • attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 546 | • attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt EQ initializer-clause 548 parameter-declaration-clause → parameter-declaration-list COMMA • ELLIPSIS 550 parameter-declaration-list → parameter-declaration-list COMMA • parameter-declaration ELLIPSIS shift, and go to state 1016 $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 219 parameter-declaration go to state 1017
547 parameter-declaration-clause → parameter-declaration-list-opt ELLIPSIS-opt • $default reduce using rule 547 (parameter-declaration-clause)
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty 84 | • attribute-specifier-seq 492 noptr-declarator → noptr-declarator OPEN_SQUARE constant-expression-opt CLOSE_SQUARE • attribute-specifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 1018
701 trailing-return-type → DEREF type-id • $default reduce using rule 701 (trailing-return-type)
424 member-specification → access-specifier COLON member-specification-opt • $default reduce using rule 424 (member-specification)
12 IDENTIFIER-opt → IDENTIFIER • [ALIGNAS, OPEN_SQUARE, COLON] 137 class-name → IDENTIFIER • [SCOPE] 246 enum-name → IDENTIFIER • [SCOPE] 444 namespace-alias → IDENTIFIER • [SCOPE] 450 namespace-name → IDENTIFIER • [SCOPE] 695 template-name → IDENTIFIER • [LESS] 730 typedef-name → IDENTIFIER • [SCOPE] SCOPE reduce using rule 137 (class-name) SCOPE [reduce using rule 246 (enum-name)] SCOPE [reduce using rule 444 (namespace-alias)] SCOPE [reduce using rule 450 (namespace-name)] SCOPE [reduce using rule 730 (typedef-name)] LESS reduce using rule 695 (template-name) $default reduce using rule 12 (IDENTIFIER-opt)
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty 84 | • attribute-specifier-seq 418 member-declarator → IDENTIFIER-opt • attribute-specifier-seq-opt COLON constant-expression brace-or-equal-initializer-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 1019
116 brace-or-equal-initializer → • EQ initializer-clause 117 | • braced-init-list 118 brace-or-equal-initializer-opt → • %empty [COMMA, SEMICOLON] 119 | • brace-or-equal-initializer 120 braced-init-list → • OPEN_BRACE initializer-list COMMA-opt CLOSE_BRACE 121 | • OPEN_BRACE designated-initializer-list COMMA-opt CLOSE_BRACE 122 | • OPEN_BRACE CLOSE_BRACE 327 function-definition → attribute-specifier-seq-opt decl-specifier-seq-opt declarator • virt-specifier-seq-opt function-body 328 | attribute-specifier-seq-opt decl-specifier-seq-opt declarator • requires-clause function-body 415 member-declarator → declarator • virt-specifier-seq-opt pure-specifier-opt 416 | declarator • requires-clause 417 | declarator • brace-or-equal-initializer-opt 620 requires-clause → • REQUIRES constraint-logical-or-expression 768 virt-specifier → • OVERRIDE 769 | • FINAL 770 virt-specifier-seq → • virt-specifier 771 | • virt-specifier-seq virt-specifier 772 virt-specifier-seq-opt → • %empty [COMMA, EQ, SEMICOLON, COLON, OPEN_BRACE, TRY] 773 | • virt-specifier-seq EQ shift, and go to state 376 OPEN_BRACE shift, and go to state 378 FINAL shift, and go to state 610 REQUIRES shift, and go to state 379 OVERRIDE shift, and go to state 611 COMMA reduce using rule 118 (brace-or-equal-initializer-opt) COMMA [reduce using rule 772 (virt-specifier-seq-opt)] EQ [reduce using rule 772 (virt-specifier-seq-opt)] SEMICOLON reduce using rule 118 (brace-or-equal-initializer-opt) SEMICOLON [reduce using rule 772 (virt-specifier-seq-opt)] COLON reduce using rule 772 (virt-specifier-seq-opt) OPEN_BRACE [reduce using rule 772 (virt-specifier-seq-opt)] TRY reduce using rule 772 (virt-specifier-seq-opt) $default reduce using rule 118 (brace-or-equal-initializer-opt) brace-or-equal-initializer go to state 1020 brace-or-equal-initializer-opt go to state 1021 braced-init-list go to state 381 requires-clause go to state 1022 virt-specifier go to state 613 virt-specifier-seq go to state 614 virt-specifier-seq-opt go to state 1023
419 member-declarator-list → member-declarator • $default reduce using rule 419 (member-declarator-list)
420 member-declarator-list → member-declarator-list • COMMA member-declarator 422 member-declarator-list-opt → member-declarator-list • [SEMICOLON] COMMA shift, and go to state 1024 $default reduce using rule 422 (member-declarator-list-opt)
404 member-declaration → attribute-specifier-seq-opt decl-specifier-seq-opt member-declarator-list-opt • SEMICOLON SEMICOLON shift, and go to state 1025
236 enum-base → • COLON type-specifier-seq 237 enum-base-opt → • %empty [SEMICOLON] 238 | • enum-base 496 opaque-enum-declaration → enum-key attribute-specifier-seq-opt enum-head-name • enum-base-opt SEMICOLON COLON shift, and go to state 661 $default reduce using rule 237 (enum-base-opt) enum-base go to state 662 enum-base-opt go to state 663
36 access-specifier → • PRIVATE 37 | • PROTECTED 38 | • PUBLIC 39 access-specifier-opt → • %empty [IDENTIFIER, SCOPE, DECLTYPE] 40 | • access-specifier 103 base-specifier → attribute-specifier-seq-opt VIRTUAL • access-specifier-opt class-or-decltype PRIVATE shift, and go to state 349 PROTECTED shift, and go to state 350 PUBLIC shift, and go to state 351 $default reduce using rule 39 (access-specifier-opt) access-specifier go to state 1026 access-specifier-opt go to state 1027
27 VIRTUAL-opt → • %empty [IDENTIFIER, SCOPE, DECLTYPE] 28 | • VIRTUAL 104 base-specifier → attribute-specifier-seq-opt access-specifier • VIRTUAL-opt class-or-decltype VIRTUAL shift, and go to state 1028 $default reduce using rule 27 (VIRTUAL-opt) VIRTUAL-opt go to state 1029
102 base-specifier → attribute-specifier-seq-opt class-or-decltype • $default reduce using rule 102 (base-specifier)
141 class-or-decltype → decltype-specifier • [COMMA, ELLIPSIS, OPEN_PAREN, OPEN_BRACE] 455 nested-name-specifier → decltype-specifier • SCOPE SCOPE shift, and go to state 188 $default reduce using rule 141 (class-or-decltype)
21 TEMPLATE-opt → • %empty [IDENTIFIER] 22 | • TEMPLATE 140 class-or-decltype → nested-name-specifier • TEMPLATE simple-template-id 456 nested-name-specifier → nested-name-specifier • IDENTIFIER SCOPE 457 | nested-name-specifier • TEMPLATE-opt simple-template-id SCOPE 459 nested-name-specifier-opt → nested-name-specifier • [IDENTIFIER] IDENTIFIER shift, and go to state 197 TEMPLATE shift, and go to state 1030 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] IDENTIFIER [reduce using rule 459 (nested-name-specifier-opt)] TEMPLATE-opt go to state 199
137 class-name → • IDENTIFIER 138 | • simple-template-id 139 class-or-decltype → nested-name-specifier-opt • type-name 246 enum-name → • IDENTIFIER 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id IDENTIFIER shift, and go to state 505 class-name go to state 55 enum-name go to state 71 simple-template-id go to state 96 template-name go to state 102 type-name go to state 1031 typedef-name go to state 108
105 base-specifier-list → base-specifier ELLIPSIS-opt • $default reduce using rule 105 (base-specifier-list)
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty 84 | • attribute-specifier-seq 102 base-specifier → • attribute-specifier-seq-opt class-or-decltype 103 | • attribute-specifier-seq-opt VIRTUAL access-specifier-opt class-or-decltype 104 | • attribute-specifier-seq-opt access-specifier VIRTUAL-opt class-or-decltype 106 base-specifier-list → base-specifier-list COMMA • base-specifier ELLIPSIS-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 630 base-specifier go to state 1032
131 class-head → class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt • $default reduce using rule 131 (class-head)
360 initializer → OPEN_PAREN expression-list CLOSE_PAREN • $default reduce using rule 360 (initializer)
363 initializer-list → initializer-clause ELLIPSIS-opt • $default reduce using rule 363 (initializer-list)
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 90 await-expression → • CO_AWAIT cast-expression 120 braced-init-list → • OPEN_BRACE initializer-list COMMA-opt CLOSE_BRACE 121 | • OPEN_BRACE designated-initializer-list COMMA-opt CLOSE_BRACE 122 | • OPEN_BRACE CLOSE_BRACE 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 361 initializer-clause → • assignment-expression 362 | • braced-init-list 364 initializer-list → initializer-list COMMA • initializer-clause ELLIPSIS-opt 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPEN_BRACE shift, and go to state 378 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 640 await-expression go to state 268 braced-init-list go to state 641 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 initializer-clause go to state 1033 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
227 designator → DOT IDENTIFIER • $default reduce using rule 227 (designator)
2 COMMA-opt → COMMA • [CLOSE_BRACE] 224 designated-initializer-clause → • designator brace-or-equal-initializer 226 designated-initializer-list → designated-initializer-list COMMA • designated-initializer-clause 227 designator → • DOT IDENTIFIER DOT shift, and go to state 647 $default reduce using rule 2 (COMMA-opt) designated-initializer-clause go to state 1034 designator go to state 650
121 braced-init-list → OPEN_BRACE designated-initializer-list COMMA-opt • CLOSE_BRACE CLOSE_BRACE shift, and go to state 1035
224 designated-initializer-clause → designator brace-or-equal-initializer • $default reduce using rule 224 (designated-initializer-clause)
2 COMMA-opt → COMMA • [CLOSE_BRACE] 19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 90 await-expression → • CO_AWAIT cast-expression 120 braced-init-list → • OPEN_BRACE initializer-list COMMA-opt CLOSE_BRACE 121 | • OPEN_BRACE designated-initializer-list COMMA-opt CLOSE_BRACE 122 | • OPEN_BRACE CLOSE_BRACE 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 361 initializer-clause → • assignment-expression 362 | • braced-init-list 364 initializer-list → initializer-list COMMA • initializer-clause ELLIPSIS-opt 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPEN_BRACE shift, and go to state 378 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] CLOSE_BRACE reduce using rule 2 (COMMA-opt) DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 640 await-expression go to state 268 braced-init-list go to state 641 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 initializer-clause go to state 1033 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
120 braced-init-list → OPEN_BRACE initializer-list COMMA-opt • CLOSE_BRACE CLOSE_BRACE shift, and go to state 1036
137 class-name → • IDENTIFIER 138 | • simple-template-id 163 constraint-logical-and-expression → constraint-logical-and-expression AND_AND • primary-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 SCOPE shift, and go to state 6 THIS shift, and go to state 241 OPEN_PAREN shift, and go to state 652 OPEN_SQUARE shift, and go to state 246 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 REQUIRES shift, and go to state 250 COMPL shift, and go to state 334 LITERAL shift, and go to state 259 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 120 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 336 operator-function-id go to state 289 primary-expression go to state 1037 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 template-id go to state 299 template-name go to state 102 type-name go to state 106 typedef-name go to state 108 unqualified-id go to state 304
137 class-name → • IDENTIFIER 138 | • simple-template-id 162 constraint-logical-and-expression → • primary-expression 163 | • constraint-logical-and-expression AND_AND primary-expression 165 constraint-logical-or-expression → constraint-logical-or-expression OR_OR • constraint-logical-and-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 SCOPE shift, and go to state 6 THIS shift, and go to state 241 OPEN_PAREN shift, and go to state 652 OPEN_SQUARE shift, and go to state 246 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 REQUIRES shift, and go to state 250 COMPL shift, and go to state 334 LITERAL shift, and go to state 259 class-name go to state 55 constraint-logical-and-expression go to state 1038 conversion-function-id go to state 272 decltype-specifier go to state 120 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 336 operator-function-id go to state 289 primary-expression go to state 655 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 template-id go to state 299 template-name go to state 102 type-name go to state 106 typedef-name go to state 108 unqualified-id go to state 304
251 enumerator-definition → enumerator EQ constant-expression • $default reduce using rule 251 (enumerator-definition)
248 enum-specifier → enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE • $default reduce using rule 248 (enum-specifier)
253 enumerator-list → enumerator-list COMMA enumerator-definition • $default reduce using rule 253 (enumerator-list)
236 enum-base → COLON type-specifier-seq • $default reduce using rule 236 (enum-base)
496 opaque-enum-declaration → enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt SEMICOLON • $default reduce using rule 496 (opaque-enum-declaration)
215 deduction-guide → explicit-specifier-opt template-name OPEN_PAREN parameter-declaration-clause CLOSE_PAREN • DEREF simple-template-id SEMICOLON DEREF shift, and go to state 1039
438 module-partition-opt → module-partition • $default reduce using rule 438 (module-partition-opt)
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty 84 | • attribute-specifier-seq 427 module-declaration → EXPORT-opt MODULE module-name module-partition-opt • attribute-specifier-seq-opt SEMICOLON $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 1040
583 private-module-fragment → MODULE COLON • PRIVATE SEMICOLON declaration-seq-opt PRIVATE shift, and go to state 1041
708 type-constraint → nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER • $default reduce using rule 708 (type-constraint)
150 concept-definition → CONCEPT concept-name EQ constraint-expression • SEMICOLON SEMICOLON shift, and go to state 1042
161 constraint-expression → logical-or-expression • [SEMICOLON] 397 logical-or-expression → logical-or-expression • OR_OR logical-and-expression OR_OR shift, and go to state 555 $default reduce using rule 161 (constraint-expression)
229 elaborated-type-specifier → class-key attribute-specifier-seq-opt nested-name-specifier-opt • IDENTIFIER IDENTIFIER shift, and go to state 1043
5 ELLIPSIS-opt → • %empty [COMMA, GREATER] 6 | • ELLIPSIS 686 template-argument-list → template-argument-list COMMA template-argument • ELLIPSIS-opt ELLIPSIS shift, and go to state 155 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 1044
482 noptr-abstract-declarator → noptr-abstract-declarator-opt • parameters-and-qualifiers 483 | noptr-abstract-declarator-opt • OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 553 parameters-and-qualifiers → • OPEN_PAREN parameter-declaration-clause CLOSE_PAREN cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt OPEN_PAREN shift, and go to state 345 OPEN_SQUARE shift, and go to state 906 parameters-and-qualifiers go to state 1045
484 noptr-abstract-declarator → OPEN_PAREN ptr-abstract-declarator • CLOSE_PAREN CLOSE_PAREN shift, and go to state 1046
137 class-name → • IDENTIFIER 138 | • simple-template-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 482 noptr-abstract-declarator → • noptr-abstract-declarator-opt parameters-and-qualifiers 483 | • noptr-abstract-declarator-opt OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 484 | • OPEN_PAREN ptr-abstract-declarator CLOSE_PAREN 485 noptr-abstract-declarator-opt → • %empty [OPEN_PAREN, OPEN_SQUARE] 486 | • noptr-abstract-declarator 586 ptr-abstract-declarator → • noptr-abstract-declarator 587 | • ptr-operator ptr-abstract-declarator-opt 587 | ptr-operator • ptr-abstract-declarator-opt 588 ptr-abstract-declarator-opt → • %empty [CLOSE_PAREN] 589 | • ptr-abstract-declarator 592 ptr-operator → • MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 593 | • AND attribute-specifier-seq-opt 594 | • AND_AND attribute-specifier-seq-opt 595 | • nested-name-specifier MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 OPEN_PAREN shift, and go to state 681 AND shift, and go to state 159 AND_AND shift, and go to state 162 DECLTYPE shift, and go to state 21 MULT shift, and go to state 163 OPEN_PAREN [reduce using rule 485 (noptr-abstract-declarator-opt)] CLOSE_PAREN reduce using rule 588 (ptr-abstract-declarator-opt) $default reduce using rule 485 (noptr-abstract-declarator-opt) class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 noptr-abstract-declarator go to state 685 noptr-abstract-declarator-opt go to state 903 ptr-abstract-declarator go to state 911 ptr-abstract-declarator-opt go to state 912 ptr-operator go to state 905 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 158 constant-expression → • conditional-expression 159 constant-expression-opt → • %empty [CLOSE_SQUARE] 160 | • constant-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 483 noptr-abstract-declarator → noptr-abstract-declarator-opt OPEN_SQUARE • constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] CLOSE_SQUARE reduce using rule 159 (constant-expression-opt) DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 307 constant-expression go to state 621 constant-expression-opt go to state 1047 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 309 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
30 abstract-declarator → noptr-abstract-declarator-opt parameters-and-qualifiers • trailing-return-type 482 noptr-abstract-declarator → noptr-abstract-declarator-opt parameters-and-qualifiers • [COMMA, ELLIPSIS, EQ, SEMICOLON, OPEN_PAREN, CLOSE_PAREN, OPEN_SQUARE, COLON, OPEN_BRACE, FINAL, GREATER, TRY, REQUIRES, OVERRIDE] 701 trailing-return-type → • DEREF type-id DEREF shift, and go to state 623 $default reduce using rule 482 (noptr-abstract-declarator) trailing-return-type go to state 1048
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 158 constant-expression → • conditional-expression 159 constant-expression-opt → • %empty [CLOSE_SQUARE] 160 | • constant-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 488 noptr-abstract-pack-declarator → noptr-abstract-pack-declarator OPEN_SQUARE • constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] CLOSE_SQUARE reduce using rule 159 (constant-expression-opt) DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 307 constant-expression go to state 621 constant-expression-opt go to state 1049 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 309 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
487 noptr-abstract-pack-declarator → noptr-abstract-pack-declarator parameters-and-qualifiers • $default reduce using rule 487 (noptr-abstract-pack-declarator)
35 abstract-pack-declarator → ptr-operator abstract-pack-declarator • $default reduce using rule 35 (abstract-pack-declarator)
589 ptr-abstract-declarator-opt → ptr-abstract-declarator • $default reduce using rule 589 (ptr-abstract-declarator-opt)
587 ptr-abstract-declarator → ptr-operator ptr-abstract-declarator-opt • $default reduce using rule 587 (ptr-abstract-declarator)
555 placeholder-type-specifier → type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN • $default reduce using rule 555 (placeholder-type-specifier)
6 ELLIPSIS-opt → ELLIPSIS • [IDENTIFIER, SCOPE, OPERATOR, DECLTYPE, COMPL] 489 noptr-abstract-pack-declarator → ELLIPSIS • [COMMA, ELLIPSIS, EQ, OPEN_PAREN, CLOSE_PAREN, OPEN_SQUARE, GREATER] IDENTIFIER reduce using rule 6 (ELLIPSIS-opt) SCOPE reduce using rule 6 (ELLIPSIS-opt) OPERATOR reduce using rule 6 (ELLIPSIS-opt) DECLTYPE reduce using rule 6 (ELLIPSIS-opt) COMPL reduce using rule 6 (ELLIPSIS-opt) $default reduce using rule 489 (noptr-abstract-pack-declarator)
5 ELLIPSIS-opt → • %empty [IDENTIFIER, SCOPE, OPERATOR, DECLTYPE, COMPL] 6 | • ELLIPSIS 137 class-name → • IDENTIFIER 138 | • simple-template-id 213 declarator-id → • ELLIPSIS-opt id-expression 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 482 noptr-abstract-declarator → • noptr-abstract-declarator-opt parameters-and-qualifiers 483 | • noptr-abstract-declarator-opt OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 484 | • OPEN_PAREN ptr-abstract-declarator CLOSE_PAREN 484 | OPEN_PAREN • ptr-abstract-declarator CLOSE_PAREN 485 noptr-abstract-declarator-opt → • %empty [OPEN_PAREN, OPEN_SQUARE] 486 | • noptr-abstract-declarator 490 noptr-declarator → • declarator-id attribute-specifier-seq-opt 491 | • noptr-declarator parameters-and-qualifiers 492 | • noptr-declarator OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 493 | • OPEN_PAREN ptr-declarator CLOSE_PAREN 493 | OPEN_PAREN • ptr-declarator CLOSE_PAREN 586 ptr-abstract-declarator → • noptr-abstract-declarator 587 | • ptr-operator ptr-abstract-declarator-opt 590 ptr-declarator → • noptr-declarator 591 | • ptr-operator ptr-declarator 592 ptr-operator → • MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 593 | • AND attribute-specifier-seq-opt 594 | • AND_AND attribute-specifier-seq-opt 595 | • nested-name-specifier MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id ELLIPSIS shift, and go to state 155 IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 OPEN_PAREN shift, and go to state 915 AND shift, and go to state 159 AND_AND shift, and go to state 162 DECLTYPE shift, and go to state 21 MULT shift, and go to state 163 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] SCOPE [reduce using rule 5 (ELLIPSIS-opt)] OPEN_PAREN [reduce using rule 485 (noptr-abstract-declarator-opt)] OPEN_SQUARE reduce using rule 485 (noptr-abstract-declarator-opt) DECLTYPE [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 164 class-name go to state 55 declarator-id go to state 170 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 noptr-abstract-declarator go to state 685 noptr-abstract-declarator-opt go to state 903 noptr-declarator go to state 327 ptr-abstract-declarator go to state 904 ptr-declarator go to state 328 ptr-operator go to state 1050 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
545 parameter-declaration → attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt • [COMMA, ELLIPSIS, CLOSE_PAREN, GREATER] 546 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt • EQ initializer-clause EQ shift, and go to state 1051 $default reduce using rule 545 (parameter-declaration)
543 parameter-declaration → attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator • [COMMA, ELLIPSIS, CLOSE_PAREN, GREATER] 544 | attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator • EQ initializer-clause EQ shift, and go to state 1052 $default reduce using rule 543 (parameter-declaration)
5 ELLIPSIS-opt → • %empty [IDENTIFIER, SCOPE, OPERATOR, DECLTYPE, COMPL] 6 | • ELLIPSIS 34 abstract-pack-declarator → • noptr-abstract-pack-declarator 35 | • ptr-operator abstract-pack-declarator 35 | ptr-operator • abstract-pack-declarator 137 class-name → • IDENTIFIER 138 | • simple-template-id 213 declarator-id → • ELLIPSIS-opt id-expression 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 482 noptr-abstract-declarator → • noptr-abstract-declarator-opt parameters-and-qualifiers 483 | • noptr-abstract-declarator-opt OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 484 | • OPEN_PAREN ptr-abstract-declarator CLOSE_PAREN 485 noptr-abstract-declarator-opt → • %empty [OPEN_PAREN, OPEN_SQUARE] 486 | • noptr-abstract-declarator 487 noptr-abstract-pack-declarator → • noptr-abstract-pack-declarator parameters-and-qualifiers 488 | • noptr-abstract-pack-declarator OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 489 | • ELLIPSIS 490 noptr-declarator → • declarator-id attribute-specifier-seq-opt 491 | • noptr-declarator parameters-and-qualifiers 492 | • noptr-declarator OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 493 | • OPEN_PAREN ptr-declarator CLOSE_PAREN 586 ptr-abstract-declarator → • noptr-abstract-declarator 587 | • ptr-operator ptr-abstract-declarator-opt 587 | ptr-operator • ptr-abstract-declarator-opt 588 ptr-abstract-declarator-opt → • %empty [COMMA, ELLIPSIS, EQ, CLOSE_PAREN, GREATER] 589 | • ptr-abstract-declarator 590 ptr-declarator → • noptr-declarator 591 | • ptr-operator ptr-declarator 591 | ptr-operator • ptr-declarator 592 ptr-operator → • MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 593 | • AND attribute-specifier-seq-opt 594 | • AND_AND attribute-specifier-seq-opt 595 | • nested-name-specifier MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id ELLIPSIS shift, and go to state 914 IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 OPEN_PAREN shift, and go to state 915 AND shift, and go to state 159 AND_AND shift, and go to state 162 DECLTYPE shift, and go to state 21 MULT shift, and go to state 163 ELLIPSIS [reduce using rule 588 (ptr-abstract-declarator-opt)] IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] SCOPE [reduce using rule 5 (ELLIPSIS-opt)] OPEN_PAREN [reduce using rule 485 (noptr-abstract-declarator-opt)] OPEN_SQUARE reduce using rule 485 (noptr-abstract-declarator-opt) OPERATOR reduce using rule 5 (ELLIPSIS-opt) DECLTYPE [reduce using rule 5 (ELLIPSIS-opt)] COMPL reduce using rule 5 (ELLIPSIS-opt) $default reduce using rule 588 (ptr-abstract-declarator-opt) ELLIPSIS-opt go to state 164 abstract-pack-declarator go to state 910 class-name go to state 55 declarator-id go to state 170 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 noptr-abstract-declarator go to state 685 noptr-abstract-declarator-opt go to state 903 noptr-abstract-pack-declarator go to state 687 noptr-declarator go to state 327 ptr-abstract-declarator go to state 911 ptr-abstract-declarator-opt go to state 912 ptr-declarator go to state 348 ptr-operator go to state 918 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
719 type-parameter → template-head type-parameter-key ELLIPSIS-opt IDENTIFIER-opt • $default reduce using rule 719 (type-parameter)
137 class-name → • IDENTIFIER 138 | • simple-template-id 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 340 id-expression → • unqualified-id 341 | • qualified-id 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 720 type-parameter → template-head type-parameter-key IDENTIFIER-opt EQ • id-expression 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 SCOPE shift, and go to state 6 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 COMPL shift, and go to state 334 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 120 enum-name go to state 71 id-expression go to state 1053 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 336 operator-function-id go to state 289 qualified-id go to state 293 simple-template-id go to state 297 template-id go to state 299 template-name go to state 102 type-name go to state 106 typedef-name go to state 108 unqualified-id go to state 304
718 type-parameter → type-constraint IDENTIFIER-opt EQ type-id • $default reduce using rule 718 (type-parameter)
716 type-parameter → type-parameter-key IDENTIFIER-opt EQ type-id • $default reduce using rule 716 (type-parameter)
44 alias-declaration → USING IDENTIFIER attribute-specifier-seq-opt EQ defining-type-id SEMICOLON • $default reduce using rule 44 (alias-declaration)
45 alignment-specifier → • ALIGNAS OPEN_PAREN type-id ELLIPSIS-opt CLOSE_PAREN 46 | • ALIGNAS OPEN_PAREN constant-expression ELLIPSIS-opt CLOSE_PAREN 80 attribute-specifier → • OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE 81 | • alignment-specifier 82 attribute-specifier-seq → attribute-specifier-seq-opt • attribute-specifier 220 defining-type-specifier-seq → defining-type-specifier attribute-specifier-seq-opt • [ELLIPSIS, IDENTIFIER, SCOPE, SEMICOLON, OPEN_PAREN, AND, OPEN_SQUARE, AND_AND, DECLTYPE, MULT] ALIGNAS shift, and go to state 157 OPEN_SQUARE shift, and go to state 161 OPEN_SQUARE [reduce using rule 220 (defining-type-specifier-seq)] $default reduce using rule 220 (defining-type-specifier-seq) alignment-specifier go to state 165 attribute-specifier go to state 166
221 defining-type-specifier-seq → defining-type-specifier defining-type-specifier-seq • $default reduce using rule 221 (defining-type-specifier-seq)
216 defining-type-id → defining-type-specifier-seq abstract-declarator-opt • $default reduce using rule 216 (defining-type-id)
477 noexcept-expression → NOEXCEPT OPEN_PAREN expression CLOSE_PAREN • $default reduce using rule 477 (noexcept-expression)
286 fold-expression → OPEN_PAREN ELLIPSIS fold-operator cast-expression • CLOSE_PAREN CLOSE_PAREN shift, and go to state 1054
285 fold-expression → OPEN_PAREN cast-expression fold-operator ELLIPSIS • CLOSE_PAREN 287 | OPEN_PAREN cast-expression fold-operator ELLIPSIS • fold-operator cast-expression CLOSE_PAREN 288 fold-operator → • PLUS 289 | • MINUS 290 | • MULT 291 | • DIV 292 | • MOD 293 | • XOR 294 | • AND 295 | • OR 296 | • LSHIFT 297 | • RSHIFT 298 | • PLUS_EQ 299 | • MINUS_EQ 300 | • MULT_EQ 301 | • DIV_EQ 302 | • MOD_EQ 303 | • XOR_EQ 304 | • AND_EQ 305 | • OR_EQ 306 | • LSHIFT_EQ 307 | • RSHIFT_EQ 308 | • EQ 309 | • EQ_EQ 310 | • NOT_EQ 311 | • LESS 312 | • GREATER 313 | • LESS_EQ 314 | • GREATER_EQ 315 | • AND_AND 316 | • OR_OR 317 | • COMMA 318 | • DOT_STAR 319 | • DEREF_STAR COMMA shift, and go to state 707 PLUS shift, and go to state 708 MINUS shift, and go to state 709 EQ shift, and go to state 710 CLOSE_PAREN shift, and go to state 1055 AND shift, and go to state 711 MULT_EQ shift, and go to state 712 DIV_EQ shift, and go to state 713 MOD_EQ shift, and go to state 714 PLUS_EQ shift, and go to state 715 MINUS_EQ shift, and go to state 716 RSHIFT_EQ shift, and go to state 717 LSHIFT_EQ shift, and go to state 718 AND_EQ shift, and go to state 719 XOR_EQ shift, and go to state 720 OR_EQ shift, and go to state 721 AND_AND shift, and go to state 722 OR_OR shift, and go to state 723 EQ_EQ shift, and go to state 724 NOT_EQ shift, and go to state 725 XOR shift, and go to state 726 LESS shift, and go to state 727 GREATER shift, and go to state 728 MULT shift, and go to state 729 DIV shift, and go to state 730 MOD shift, and go to state 731 OR shift, and go to state 732 LSHIFT shift, and go to state 733 RSHIFT shift, and go to state 734 LESS_EQ shift, and go to state 735 GREATER_EQ shift, and go to state 736 DOT_STAR shift, and go to state 737 DEREF_STAR shift, and go to state 738 fold-operator go to state 1056
130 cast-expression → OPEN_PAREN type-id CLOSE_PAREN cast-expression • $default reduce using rule 130 (cast-expression)
636 simple-capture → AND IDENTIFIER ELLIPSIS-opt • $default reduce using rule 636 (simple-capture)
116 brace-or-equal-initializer → • EQ initializer-clause 117 | • braced-init-list 120 braced-init-list → • OPEN_BRACE initializer-list COMMA-opt CLOSE_BRACE 121 | • OPEN_BRACE designated-initializer-list COMMA-opt CLOSE_BRACE 122 | • OPEN_BRACE CLOSE_BRACE 347 init-capture → AND ELLIPSIS-opt IDENTIFIER • initializer 359 initializer → • brace-or-equal-initializer 360 | • OPEN_PAREN expression-list CLOSE_PAREN EQ shift, and go to state 376 OPEN_PAREN shift, and go to state 377 OPEN_BRACE shift, and go to state 378 brace-or-equal-initializer go to state 380 braced-init-list go to state 381 initializer go to state 1057
346 init-capture → ELLIPSIS-opt IDENTIFIER initializer • $default reduce using rule 346 (init-capture)
5 ELLIPSIS-opt → • %empty [IDENTIFIER] 6 | • ELLIPSIS 347 init-capture → AND • ELLIPSIS-opt IDENTIFIER initializer 636 simple-capture → AND • IDENTIFIER ELLIPSIS-opt ELLIPSIS shift, and go to state 155 IDENTIFIER shift, and go to state 744 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] ELLIPSIS-opt go to state 745
128 capture-list → capture-list • COMMA capture 381 lambda-capture → capture-default COMMA capture-list • [CLOSE_SQUARE] COMMA shift, and go to state 749 $default reduce using rule 381 (lambda-capture)
128 capture-list → capture-list COMMA capture • $default reduce using rule 128 (capture-list)
502 overloadable-operator → DELETE OPEN_SQUARE CLOSE_SQUARE • $default reduce using rule 502 (overloadable-operator)
501 overloadable-operator → NEW OPEN_SQUARE CLOSE_SQUARE • $default reduce using rule 501 (overloadable-operator)
498 operator-function-id → OPERATOR overloadable-operator LESS template-argument-list-opt • GREATER GREATER shift, and go to state 1058
166 conversion-declarator → ptr-operator conversion-declarator-opt • $default reduce using rule 166 (conversion-declarator)
615 requirement-parameter-list → OPEN_PAREN parameter-declaration-clause CLOSE_PAREN • $default reduce using rule 615 (requirement-parameter-list)
137 class-name → • IDENTIFIER 138 | • simple-template-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 723 type-requirement → TYPENAME • nested-name-specifier-opt type-name SEMICOLON 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → TYPENAME • nested-name-specifier IDENTIFIER 733 | TYPENAME • nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 DECLTYPE shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 1059 nested-name-specifier-opt go to state 1060 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 148 compound-requirement → OPEN_BRACE • expression CLOSE_BRACE NOEXCEPT-opt return-type-requirement-opt SEMICOLON 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 277 expression → • assignment-expression 278 | • expression COMMA assignment-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 1061 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 161 constraint-expression → • logical-or-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 461 nested-requirement → REQUIRES • constraint-expression SEMICOLON 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 615 requirement-parameter-list → • OPEN_PAREN parameter-declaration-clause CLOSE_PAREN 616 requirement-parameter-list-opt → • %empty [OPEN_BRACE] 617 | • requirement-parameter-list 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 623 | REQUIRES • requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 1062 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] OPEN_BRACE reduce using rule 616 (requirement-parameter-list-opt) DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 constraint-expression go to state 1063 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 900 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requirement-parameter-list go to state 503 requirement-parameter-list-opt go to state 504 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
612 requirement → compound-requirement • $default reduce using rule 612 (requirement)
278 expression → expression • COMMA assignment-expression 642 simple-requirement → expression • SEMICOLON COMMA shift, and go to state 532 SEMICOLON shift, and go to state 1064
613 requirement → nested-requirement • $default reduce using rule 613 (requirement)
618 requirement-seq → requirement • $default reduce using rule 618 (requirement-seq)
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 148 compound-requirement → • OPEN_BRACE expression CLOSE_BRACE NOEXCEPT-opt return-type-requirement-opt SEMICOLON 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 277 expression → • assignment-expression 278 | • expression COMMA assignment-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 461 nested-requirement → • REQUIRES constraint-expression SEMICOLON 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 610 requirement → • simple-requirement 611 | • type-requirement 612 | • compound-requirement 613 | • nested-requirement 614 requirement-body → OPEN_BRACE requirement-seq • CLOSE_BRACE 619 requirement-seq → requirement-seq • requirement 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 642 simple-requirement → • expression SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 723 type-requirement → • TYPENAME nested-name-specifier-opt type-name SEMICOLON 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 942 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPEN_BRACE shift, and go to state 943 CLOSE_BRACE shift, and go to state 1065 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 944 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 compound-requirement go to state 945 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 946 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 nested-requirement go to state 947 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requirement go to state 1066 requires-expression go to state 295 shift-expression go to state 296 simple-requirement go to state 950 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-requirement go to state 951 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
610 requirement → simple-requirement • $default reduce using rule 610 (requirement)
611 requirement → type-requirement • $default reduce using rule 611 (requirement)
570 postfix-expression → DYNAMIC_CAST LESS type-id GREATER • OPEN_PAREN expression CLOSE_PAREN OPEN_PAREN shift, and go to state 1067
571 postfix-expression → STATIC_CAST LESS type-id GREATER • OPEN_PAREN expression CLOSE_PAREN OPEN_PAREN shift, and go to state 1068
572 postfix-expression → REINTERPRET_CAST LESS type-id GREATER • OPEN_PAREN expression CLOSE_PAREN OPEN_PAREN shift, and go to state 1069
573 postfix-expression → CONST_CAST LESS type-id GREATER • OPEN_PAREN expression CLOSE_PAREN OPEN_PAREN shift, and go to state 1070
574 postfix-expression → TYPEID OPEN_PAREN expression CLOSE_PAREN • $default reduce using rule 574 (postfix-expression)
575 postfix-expression → TYPEID OPEN_PAREN type-id CLOSE_PAREN • $default reduce using rule 575 (postfix-expression)
742 unary-expression → SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER • CLOSE_PAREN CLOSE_PAREN shift, and go to state 1071
741 unary-expression → SIZEOF OPEN_PAREN type-id CLOSE_PAREN • $default reduce using rule 741 (unary-expression)
743 unary-expression → ALIGNOF OPEN_PAREN type-id CLOSE_PAREN • $default reduce using rule 743 (unary-expression)
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 223 | SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE • cast-expression 246 enum-name → • IDENTIFIER 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 await-expression go to state 268 cast-expression go to state 1072 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
472 new-placement → OPEN_PAREN expression-list • CLOSE_PAREN CLOSE_PAREN shift, and go to state 1073
134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 175 cv-qualifier → • CONST 176 | • VOLATILE 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 467 new-expression → SCOPE-opt NEW new-placement-opt OPEN_PAREN • type-id CLOSE_PAREN new-initializer-opt 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 711 type-id → • type-specifier-seq abstract-declarator-opt 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 728 type-specifier-seq → • type-specifier attribute-specifier-seq-opt 729 | • type-specifier type-specifier-seq 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 124 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] $default reduce using rule 709 (type-constraint-opt) class-key go to state 404 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 1074 type-name go to state 106 type-specifier go to state 412 type-specifier-seq go to state 413 typedef-name go to state 108 typename-specifier go to state 109
120 braced-init-list → • OPEN_BRACE initializer-list COMMA-opt CLOSE_BRACE 121 | • OPEN_BRACE designated-initializer-list COMMA-opt CLOSE_BRACE 122 | • OPEN_BRACE CLOSE_BRACE 466 new-expression → SCOPE-opt NEW new-placement-opt new-type-id • new-initializer-opt 468 new-initializer → • OPEN_PAREN expression-list-opt CLOSE_PAREN 469 | • braced-init-list 470 new-initializer-opt → • %empty [COMMA, ELLIPSIS, PLUS, MINUS, EQ, SEMICOLON, CLOSE_PAREN, AND, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, SPACESHIP, QUERY, AND_AND, OR_OR, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR] 471 | • new-initializer OPEN_PAREN shift, and go to state 1075 OPEN_BRACE shift, and go to state 378 OPEN_BRACE [reduce using rule 470 (new-initializer-opt)] $default reduce using rule 470 (new-initializer-opt) braced-init-list go to state 1076 new-initializer go to state 1077 new-initializer-opt go to state 1078
137 class-name → • IDENTIFIER 138 | • simple-template-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 462 new-declarator → • ptr-operator new-declarator-opt 463 | • noptr-new-declarator 464 new-declarator-opt → • %empty [COMMA, ELLIPSIS, PLUS, MINUS, EQ, SEMICOLON, OPEN_PAREN, CLOSE_PAREN, AND, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, SPACESHIP, QUERY, AND_AND, OR_OR, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR] 465 | • new-declarator 475 new-type-id → type-specifier-seq • new-declarator-opt 494 noptr-new-declarator → • OPEN_SQUARE expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 495 | • noptr-new-declarator OPEN_SQUARE constant-expression CLOSE_SQUARE attribute-specifier-seq-opt 592 ptr-operator → • MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 593 | • AND attribute-specifier-seq-opt 594 | • AND_AND attribute-specifier-seq-opt 595 | • nested-name-specifier MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 AND shift, and go to state 159 OPEN_SQUARE shift, and go to state 1079 AND_AND shift, and go to state 162 DECLTYPE shift, and go to state 21 MULT shift, and go to state 163 AND [reduce using rule 464 (new-declarator-opt)] AND_AND [reduce using rule 464 (new-declarator-opt)] MULT [reduce using rule 464 (new-declarator-opt)] $default reduce using rule 464 (new-declarator-opt) class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 new-declarator go to state 1080 new-declarator-opt go to state 1081 noptr-new-declarator go to state 1082 ptr-operator go to state 1083 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 191 decl-specifier-seq-opt → • %empty [NOEXCEPT, ALIGNAS, OPEN_SQUARE, OPEN_BRACE, DEREF, REQUIRES] 192 | • decl-specifier-seq 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 385 lambda-declarator → OPEN_PAREN parameter-declaration-clause CLOSE_PAREN • lambda-specifiers requires-clause-opt 389 lambda-specifiers → • decl-specifier-seq-opt noexcept-specifier-opt attribute-specifier-seq-opt trailing-return-type-opt 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id CONSTEXPR shift, and go to state 1 EXTERN shift, and go to state 149 IDENTIFIER shift, and go to state 4 INLINE shift, and go to state 150 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 191 (decl-specifier-seq-opt) class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 537 decl-specifier-seq-opt go to state 538 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 153 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 lambda-specifiers go to state 1084 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109
387 lambda-expression → lambda-introducer LESS template-parameter-list GREATER • requires-clause-opt lambda-declarator compound-statement 620 requires-clause → • REQUIRES constraint-logical-or-expression 621 requires-clause-opt → • %empty [CONSTEXPR, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TYPENAME, VIRTUAL, ALIGNAS, OPEN_PAREN, OPEN_SQUARE, OPEN_BRACE, CLASS, STRUCT, UNION, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, ENUM, EXPLICIT, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 622 | • requires-clause REQUIRES shift, and go to state 379 $default reduce using rule 621 (requires-clause-opt) requires-clause go to state 696 requires-clause-opt go to state 1085
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 158 constant-expression → • conditional-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 478 noexcept-specifier → NOEXCEPT OPEN_PAREN • constant-expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 307 constant-expression go to state 1086 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 309 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
45 alignment-specifier → • ALIGNAS OPEN_PAREN type-id ELLIPSIS-opt CLOSE_PAREN 46 | • ALIGNAS OPEN_PAREN constant-expression ELLIPSIS-opt CLOSE_PAREN 80 attribute-specifier → • OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE 81 | • alignment-specifier 82 attribute-specifier-seq → attribute-specifier-seq-opt • attribute-specifier 389 lambda-specifiers → decl-specifier-seq-opt noexcept-specifier-opt attribute-specifier-seq-opt • trailing-return-type-opt 701 trailing-return-type → • DEREF type-id 702 trailing-return-type-opt → • %empty [OPEN_BRACE, REQUIRES] 703 | • trailing-return-type ALIGNAS shift, and go to state 157 OPEN_SQUARE shift, and go to state 161 DEREF shift, and go to state 623 $default reduce using rule 702 (trailing-return-type-opt) alignment-specifier go to state 165 attribute-specifier go to state 166 trailing-return-type go to state 1087 trailing-return-type-opt go to state 1088
445 namespace-alias-definition → NAMESPACE • IDENTIFIER EQ qualified-namespace-specifier SEMICOLON IDENTIFIER shift, and go to state 1089
84 attribute-specifier-seq-opt → attribute-specifier-seq • [CONSTEXPR, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, NOT, SCOPE, THIS, TYPENAME, VIRTUAL, PLUS, MINUS, USING, SEMICOLON, ALIGNAS, OPEN_PAREN, AND, ASM, OPEN_SQUARE, CO_AWAIT, OPEN_BRACE, CLASS, STRUCT, UNION, OPERATOR, CO_RETURN, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DELETE, ENUM, EXPLICIT, MULT, DEFAULT, TRY, WHILE, DO, FOR, BREAK, CONTINUE, RETURN, GOTO, CASE, REQUIRES, NEW, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, DYNAMIC_CAST, STATIC_CAST, REINTERPRET_CAST, CONST_CAST, TYPEID, LITERAL, IF, SWITCH, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE, THROW, SIZEOF, ALIGNOF, CO_YIELD] 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 640 simple-declaration → attribute-specifier-seq • decl-specifier-seq init-declarator-list SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id CONSTEXPR shift, and go to state 1 EXTERN shift, and go to state 149 IDENTIFIER shift, and go to state 4 INLINE shift, and go to state 150 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 CONSTEXPR [reduce using rule 84 (attribute-specifier-seq-opt)] EXTERN [reduce using rule 84 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 84 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] INLINE [reduce using rule 84 (attribute-specifier-seq-opt)] SCOPE [reduce using rule 84 (attribute-specifier-seq-opt)] TYPENAME [reduce using rule 84 (attribute-specifier-seq-opt)] VIRTUAL [reduce using rule 84 (attribute-specifier-seq-opt)] CLASS [reduce using rule 84 (attribute-specifier-seq-opt)] STRUCT [reduce using rule 84 (attribute-specifier-seq-opt)] UNION [reduce using rule 84 (attribute-specifier-seq-opt)] CONST [reduce using rule 84 (attribute-specifier-seq-opt)] VOLATILE [reduce using rule 84 (attribute-specifier-seq-opt)] FRIEND [reduce using rule 84 (attribute-specifier-seq-opt)] TYPEDEF [reduce using rule 84 (attribute-specifier-seq-opt)] CONSTEVAL [reduce using rule 84 (attribute-specifier-seq-opt)] CONSTINIT [reduce using rule 84 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 84 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] ENUM [reduce using rule 84 (attribute-specifier-seq-opt)] EXPLICIT [reduce using rule 84 (attribute-specifier-seq-opt)] AUTO reduce using rule 84 (attribute-specifier-seq-opt) AUTO [reduce using rule 709 (type-constraint-opt)] CHAR [reduce using rule 84 (attribute-specifier-seq-opt)] CHAR8_T [reduce using rule 84 (attribute-specifier-seq-opt)] CHAR16_T [reduce using rule 84 (attribute-specifier-seq-opt)] CHAR32_T [reduce using rule 84 (attribute-specifier-seq-opt)] WCHAR_T [reduce using rule 84 (attribute-specifier-seq-opt)] BOOL [reduce using rule 84 (attribute-specifier-seq-opt)] SHORT [reduce using rule 84 (attribute-specifier-seq-opt)] INT [reduce using rule 84 (attribute-specifier-seq-opt)] LONG [reduce using rule 84 (attribute-specifier-seq-opt)] SIGNED [reduce using rule 84 (attribute-specifier-seq-opt)] UNSIGNED [reduce using rule 84 (attribute-specifier-seq-opt)] FLOAT [reduce using rule 84 (attribute-specifier-seq-opt)] DOUBLE [reduce using rule 84 (attribute-specifier-seq-opt)] VOID [reduce using rule 84 (attribute-specifier-seq-opt)] STATIC [reduce using rule 84 (attribute-specifier-seq-opt)] THREAD_LOCAL [reduce using rule 84 (attribute-specifier-seq-opt)] MUTABLE [reduce using rule 84 (attribute-specifier-seq-opt)] $default reduce using rule 84 (attribute-specifier-seq-opt) class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 152 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 153 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 45 alignment-specifier → • ALIGNAS OPEN_PAREN type-id ELLIPSIS-opt CLOSE_PAREN 46 | • ALIGNAS OPEN_PAREN constant-expression ELLIPSIS-opt CLOSE_PAREN 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 49 asm-declaration → attribute-specifier-seq-opt • ASM OPEN_PAREN string-literal CLOSE_PAREN SEMICOLON 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 80 attribute-specifier → • OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE 81 | • alignment-specifier 82 attribute-specifier-seq → attribute-specifier-seq-opt • attribute-specifier 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 149 compound-statement → • OPEN_BRACE statement-seq-opt CLOSE_BRACE 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 171 coroutine-return-statement → • CO_RETURN expr-or-braced-init-list-opt SEMICOLON 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 277 expression → • assignment-expression 278 | • expression COMMA assignment-expression 282 expression-opt → • %empty [SEMICOLON] 283 | • expression 284 expression-statement → • expression-opt SEMICOLON 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 367 iteration-statement → • WHILE OPEN_PAREN condition CLOSE_PAREN statement 368 | • DO statement WHILE OPEN_PAREN expression CLOSE_PAREN SEMICOLON 369 | • FOR OPEN_PAREN init-statement condition-opt SEMICOLON expression-opt CLOSE_PAREN statement 370 | • FOR OPEN_PAREN init-statement-opt for-range-declaration COLON for-range-initializer CLOSE_PAREN statement 371 jump-statement → • BREAK SEMICOLON 372 | • CONTINUE SEMICOLON 373 | • RETURN expr-or-braced-init-list-opt SEMICOLON 374 | • coroutine-return-statement 375 | • GOTO IDENTIFIER SEMICOLON 376 labeled-statement → attribute-specifier-seq-opt • IDENTIFIER COLON statement 377 | attribute-specifier-seq-opt • CASE constant-expression COLON statement 378 | attribute-specifier-seq-opt • DEFAULT COLON statement 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 627 selection-statement → • IF CONSTEXPR-opt OPEN_PAREN init-statement-opt condition CLOSE_PAREN statement 628 | • IF CONSTEXPR-opt OPEN_PAREN init-statement-opt condition CLOSE_PAREN statement ELSE statement 629 | • IF NOT-opt CONSTEVAL compound-statement 630 | • IF NOT-opt CONSTEVAL compound-statement ELSE statement 631 | • SWITCH OPEN_PAREN init-statement-opt condition CLOSE_PAREN statement 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 641 simple-declaration → attribute-specifier-seq-opt • decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE initializer SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 664 statement → attribute-specifier-seq-opt • expression-statement 665 | attribute-specifier-seq-opt • compound-statement 666 | attribute-specifier-seq-opt • selection-statement 667 | attribute-specifier-seq-opt • iteration-statement 668 | attribute-specifier-seq-opt • jump-statement 670 | attribute-specifier-seq-opt • try-block 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 706 try-block → • TRY compound-statement handler-seq 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 766 using-directive → attribute-specifier-seq-opt • USING NAMESPACE nested-name-specifier-opt namespace-name SEMICOLON 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list CONSTEXPR shift, and go to state 1 EXTERN shift, and go to state 149 IDENTIFIER shift, and go to state 1090 INLINE shift, and go to state 150 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 PLUS shift, and go to state 242 MINUS shift, and go to state 243 USING shift, and go to state 156 ALIGNAS shift, and go to state 157 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 ASM shift, and go to state 160 OPEN_SQUARE shift, and go to state 1091 CO_AWAIT shift, and go to state 247 OPEN_BRACE shift, and go to state 792 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 OPERATOR shift, and go to state 248 CO_RETURN shift, and go to state 1092 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 MULT shift, and go to state 249 DEFAULT shift, and go to state 1093 TRY shift, and go to state 1094 WHILE shift, and go to state 1095 DO shift, and go to state 1096 FOR shift, and go to state 1097 BREAK shift, and go to state 1098 CONTINUE shift, and go to state 1099 RETURN shift, and go to state 1100 GOTO shift, and go to state 1101 CASE shift, and go to state 1102 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 IF shift, and go to state 1103 SWITCH shift, and go to state 1104 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] SEMICOLON reduce using rule 282 (expression-opt) DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 alignment-specifier go to state 165 and-expression go to state 266 assignment-expression go to state 267 attribute-specifier go to state 166 await-expression go to state 268 cast-expression go to state 269 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 compare-expression go to state 270 compound-statement go to state 1105 conditional-expression go to state 271 conversion-function-id go to state 272 coroutine-return-statement go to state 1106 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 1107 decltype-specifier go to state 63 defining-type-specifier go to state 65 delete-expression go to state 273 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 153 enum-name go to state 71 enum-specifier go to state 72 equality-expression go to state 274 exclusive-or-expression go to state 275 explicit-specifier go to state 154 expression go to state 1108 expression-opt go to state 1109 expression-statement go to state 1110 fold-expression go to state 277 function-specifier go to state 79 id-expression go to state 278 inclusive-or-expression go to state 279 iteration-statement go to state 1111 jump-statement go to state 1112 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 selection-statement go to state 1113 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 407 storage-class-specifier go to state 99 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 try-block go to state 1114 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 414 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
210 declaration-statement → block-declaration • $default reduce using rule 210 (declaration-statement)
669 statement → declaration-statement • $default reduce using rule 669 (statement)
663 statement → labeled-statement • $default reduce using rule 663 (statement)
671 statement-seq → statement • $default reduce using rule 671 (statement-seq)
44 alias-declaration → • USING IDENTIFIER attribute-specifier-seq-opt EQ defining-type-id SEMICOLON 49 asm-declaration → • attribute-specifier-seq-opt ASM OPEN_PAREN string-literal CLOSE_PAREN SEMICOLON 82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, NOT, SCOPE, THIS, TYPENAME, VIRTUAL, PLUS, MINUS, USING, SEMICOLON, ALIGNAS, OPEN_PAREN, AND, ASM, OPEN_SQUARE, CO_AWAIT, OPEN_BRACE, CLASS, STRUCT, UNION, OPERATOR, CO_RETURN, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DELETE, ENUM, EXPLICIT, MULT, DEFAULT, TRY, WHILE, DO, FOR, BREAK, CONTINUE, RETURN, GOTO, CASE, REQUIRES, NEW, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, DYNAMIC_CAST, STATIC_CAST, REINTERPRET_CAST, CONST_CAST, TYPEID, LITERAL, IF, SWITCH, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE, THROW, SIZEOF, ALIGNOF, CO_YIELD] 84 | • attribute-specifier-seq 107 block-declaration → • simple-declaration 108 | • asm-declaration 109 | • namespace-alias-definition 110 | • using-declaration 111 | • using-enum-declaration 112 | • using-directive 113 | • static_assert-declaration 114 | • alias-declaration 115 | • opaque-enum-declaration 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 210 declaration-statement → • block-declaration 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 376 labeled-statement → • attribute-specifier-seq-opt IDENTIFIER COLON statement 377 | • attribute-specifier-seq-opt CASE constant-expression COLON statement 378 | • attribute-specifier-seq-opt DEFAULT COLON statement 444 namespace-alias → • IDENTIFIER 445 namespace-alias-definition → • NAMESPACE IDENTIFIER EQ qualified-namespace-specifier SEMICOLON 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 496 opaque-enum-declaration → • enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt SEMICOLON 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 639 simple-declaration → • decl-specifier-seq init-declarator-list-opt SEMICOLON 640 | • attribute-specifier-seq decl-specifier-seq init-declarator-list SEMICOLON 641 | • attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE initializer SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 663 statement → • labeled-statement 664 | • attribute-specifier-seq-opt expression-statement 665 | • attribute-specifier-seq-opt compound-statement 666 | • attribute-specifier-seq-opt selection-statement 667 | • attribute-specifier-seq-opt iteration-statement 668 | • attribute-specifier-seq-opt jump-statement 669 | • declaration-statement 670 | • attribute-specifier-seq-opt try-block 672 statement-seq → statement-seq • statement 674 statement-seq-opt → statement-seq • [CLOSE_BRACE] 675 static_assert-declaration → • STATIC_ASSERT OPEN_PAREN constant-expression CLOSE_PAREN SEMICOLON 676 | • STATIC_ASSERT OPEN_PAREN constant-expression COMMA string-literal CLOSE_PAREN SEMICOLON 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 762 using-declaration → • USING using-declarator-list SEMICOLON 766 using-directive → • attribute-specifier-seq-opt USING NAMESPACE nested-name-specifier-opt namespace-name SEMICOLON 767 using-enum-declaration → • USING elaborated-enum-specifier SEMICOLON CONSTEXPR shift, and go to state 1 EXTERN shift, and go to state 149 IDENTIFIER shift, and go to state 4 INLINE shift, and go to state 150 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 USING shift, and go to state 10 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 NAMESPACE shift, and go to state 970 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC_ASSERT shift, and go to state 41 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 CONSTEXPR [reduce using rule 83 (attribute-specifier-seq-opt)] EXTERN [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] INLINE [reduce using rule 83 (attribute-specifier-seq-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] VIRTUAL [reduce using rule 83 (attribute-specifier-seq-opt)] USING [reduce using rule 83 (attribute-specifier-seq-opt)] CLOSE_BRACE reduce using rule 674 (statement-seq-opt) CLASS [reduce using rule 83 (attribute-specifier-seq-opt)] STRUCT [reduce using rule 83 (attribute-specifier-seq-opt)] UNION [reduce using rule 83 (attribute-specifier-seq-opt)] CONST [reduce using rule 83 (attribute-specifier-seq-opt)] VOLATILE [reduce using rule 83 (attribute-specifier-seq-opt)] FRIEND [reduce using rule 83 (attribute-specifier-seq-opt)] TYPEDEF [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTEVAL [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTINIT [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] ENUM [reduce using rule 83 (attribute-specifier-seq-opt)] EXPLICIT [reduce using rule 83 (attribute-specifier-seq-opt)] AUTO reduce using rule 83 (attribute-specifier-seq-opt) AUTO [reduce using rule 709 (type-constraint-opt)] CHAR [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR8_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR16_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR32_T [reduce using rule 83 (attribute-specifier-seq-opt)] WCHAR_T [reduce using rule 83 (attribute-specifier-seq-opt)] BOOL [reduce using rule 83 (attribute-specifier-seq-opt)] SHORT [reduce using rule 83 (attribute-specifier-seq-opt)] INT [reduce using rule 83 (attribute-specifier-seq-opt)] LONG [reduce using rule 83 (attribute-specifier-seq-opt)] SIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] UNSIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] FLOAT [reduce using rule 83 (attribute-specifier-seq-opt)] DOUBLE [reduce using rule 83 (attribute-specifier-seq-opt)] VOID [reduce using rule 83 (attribute-specifier-seq-opt)] STATIC [reduce using rule 83 (attribute-specifier-seq-opt)] THREAD_LOCAL [reduce using rule 83 (attribute-specifier-seq-opt)] MUTABLE [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 971 attribute-specifier-seq-opt go to state 972 block-declaration go to state 973 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 974 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 labeled-statement go to state 975 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1115 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113
149 compound-statement → OPEN_BRACE statement-seq-opt • CLOSE_BRACE CLOSE_BRACE shift, and go to state 1116
694 template-id → literal-operator-id LESS template-argument-list-opt GREATER • $default reduce using rule 694 (template-id)
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 157 | logical-or-expression QUERY expression COLON • assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 1117 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
693 template-id → operator-function-id LESS template-argument-list-opt GREATER • $default reduce using rule 693 (template-id)
561 postfix-expression → postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN • $default reduce using rule 561 (postfix-expression)
560 postfix-expression → postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE • $default reduce using rule 560 (postfix-expression)
567 postfix-expression → postfix-expression DEREF TEMPLATE-opt id-expression • $default reduce using rule 567 (postfix-expression)
566 postfix-expression → postfix-expression DOT TEMPLATE-opt id-expression • $default reduce using rule 566 (postfix-expression)
562 postfix-expression → simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN • $default reduce using rule 562 (postfix-expression)
563 postfix-expression → typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN • $default reduce using rule 563 (postfix-expression)
9 EXTERN-opt → • %empty [TEMPLATE] 10 | • EXTERN 13 INLINE-opt → • %empty [NAMESPACE] 14 | • INLINE 44 alias-declaration → • USING IDENTIFIER attribute-specifier-seq-opt EQ defining-type-id SEMICOLON 49 asm-declaration → • attribute-specifier-seq-opt ASM OPEN_PAREN string-literal CLOSE_PAREN SEMICOLON 71 attribute-declaration → • attribute-specifier-seq SEMICOLON 82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, ELLIPSIS, EXTERN, IDENTIFIER, INLINE, SCOPE, TYPENAME, VIRTUAL, USING, ALIGNAS, OPEN_PAREN, AND, ASM, OPEN_SQUARE, CLASS, STRUCT, UNION, AND_AND, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, MULT, COMPL, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 84 | • attribute-specifier-seq 107 block-declaration → • simple-declaration 108 | • asm-declaration 109 | • namespace-alias-definition 110 | • using-declaration 111 | • using-enum-declaration 112 | • using-directive 113 | • static_assert-declaration 114 | • alias-declaration 115 | • opaque-enum-declaration 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 193 declaration → • block-declaration 194 | • nodeclspec-function-declaration 195 | • function-definition 196 | • template-declaration 197 | • deduction-guide 198 | • explicit-instantiation 199 | • explicit-specialization 200 | • export-declaration 201 | • linkage-specification 202 | • namespace-definition 203 | • empty-declaration 204 | • attribute-declaration 205 | • module-import-declaration 206 declaration-seq → • declaration 207 | • declaration-seq declaration 208 declaration-seq-opt → • %empty [CLOSE_BRACE] 209 | • declaration-seq 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 215 deduction-guide → • explicit-specifier-opt template-name OPEN_PAREN parameter-declaration-clause CLOSE_PAREN DEREF simple-template-id SEMICOLON 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 233 empty-declaration → • SEMICOLON 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 264 explicit-instantiation → • EXTERN-opt TEMPLATE declaration 265 explicit-specialization → • TEMPLATE LESS GREATER declaration 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 268 explicit-specifier-opt → • %empty [IDENTIFIER] 269 | • explicit-specifier 270 export-declaration → • EXPORT declaration 271 | • EXPORT OPEN_BRACE declaration-seq-opt CLOSE_BRACE 272 | • EXPORT module-import-declaration 327 function-definition → • attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | • attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 390 linkage-specification → • EXTERN string-literal OPEN_BRACE declaration-seq-opt CLOSE_BRACE 391 | • EXTERN string-literal declaration 428 module-import-declaration → • IMPORT module-name attribute-specifier-seq-opt SEMICOLON 429 | • IMPORT module-partition attribute-specifier-seq-opt SEMICOLON 430 | • IMPORT header-name attribute-specifier-seq-opt SEMICOLON 443 named-namespace-definition → • INLINE-opt NAMESPACE attribute-specifier-seq-opt IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE 444 namespace-alias → • IDENTIFIER 445 namespace-alias-definition → • NAMESPACE IDENTIFIER EQ qualified-namespace-specifier SEMICOLON 446 namespace-body → • declaration-seq-opt 447 namespace-definition → • named-namespace-definition 448 | • unnamed-namespace-definition 449 | • nested-namespace-definition 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 460 nested-namespace-definition → • NAMESPACE enclosing-namespace-specifier SCOPE INLINE-opt IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE 460 | NAMESPACE enclosing-namespace-specifier SCOPE INLINE-opt IDENTIFIER OPEN_BRACE • namespace-body CLOSE_BRACE 476 nodeclspec-function-declaration → • attribute-specifier-seq-opt declarator SEMICOLON 496 opaque-enum-declaration → • enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt SEMICOLON 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 639 simple-declaration → • decl-specifier-seq init-declarator-list-opt SEMICOLON 640 | • attribute-specifier-seq decl-specifier-seq init-declarator-list SEMICOLON 641 | • attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE initializer SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 675 static_assert-declaration → • STATIC_ASSERT OPEN_PAREN constant-expression CLOSE_PAREN SEMICOLON 676 | • STATIC_ASSERT OPEN_PAREN constant-expression COMMA string-literal CLOSE_PAREN SEMICOLON 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 689 template-declaration → • template-head declaration 690 | • template-head concept-definition 691 template-head → • TEMPLATE LESS template-parameter-list GREATER requires-clause-opt 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 753 unnamed-namespace-definition → • INLINE-opt NAMESPACE attribute-specifier-seq-opt OPEN_BRACE namespace-body CLOSE_BRACE 762 using-declaration → • USING using-declarator-list SEMICOLON 766 using-directive → • attribute-specifier-seq-opt USING NAMESPACE nested-name-specifier-opt namespace-name SEMICOLON 767 using-enum-declaration → • USING elaborated-enum-specifier SEMICOLON CONSTEXPR shift, and go to state 1 EXPORT shift, and go to state 2 EXTERN shift, and go to state 3 IDENTIFIER shift, and go to state 4 INLINE shift, and go to state 5 SCOPE shift, and go to state 6 TEMPLATE shift, and go to state 7 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 USING shift, and go to state 10 SEMICOLON shift, and go to state 11 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 IMPORT shift, and go to state 25 NAMESPACE shift, and go to state 26 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC_ASSERT shift, and go to state 41 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 CONSTEXPR [reduce using rule 83 (attribute-specifier-seq-opt)] EXTERN [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] INLINE [reduce using rule 83 (attribute-specifier-seq-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] TEMPLATE [reduce using rule 9 (EXTERN-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] VIRTUAL [reduce using rule 83 (attribute-specifier-seq-opt)] USING [reduce using rule 83 (attribute-specifier-seq-opt)] CLOSE_BRACE reduce using rule 208 (declaration-seq-opt) CLASS [reduce using rule 83 (attribute-specifier-seq-opt)] STRUCT [reduce using rule 83 (attribute-specifier-seq-opt)] UNION [reduce using rule 83 (attribute-specifier-seq-opt)] CONST [reduce using rule 83 (attribute-specifier-seq-opt)] VOLATILE [reduce using rule 83 (attribute-specifier-seq-opt)] FRIEND [reduce using rule 83 (attribute-specifier-seq-opt)] TYPEDEF [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTEVAL [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTINIT [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] ENUM [reduce using rule 83 (attribute-specifier-seq-opt)] EXPLICIT [reduce using rule 83 (attribute-specifier-seq-opt)] NAMESPACE [reduce using rule 13 (INLINE-opt)] AUTO reduce using rule 83 (attribute-specifier-seq-opt) AUTO [reduce using rule 709 (type-constraint-opt)] CHAR [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR8_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR16_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR32_T [reduce using rule 83 (attribute-specifier-seq-opt)] WCHAR_T [reduce using rule 83 (attribute-specifier-seq-opt)] BOOL [reduce using rule 83 (attribute-specifier-seq-opt)] SHORT [reduce using rule 83 (attribute-specifier-seq-opt)] INT [reduce using rule 83 (attribute-specifier-seq-opt)] LONG [reduce using rule 83 (attribute-specifier-seq-opt)] SIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] UNSIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] FLOAT [reduce using rule 83 (attribute-specifier-seq-opt)] DOUBLE [reduce using rule 83 (attribute-specifier-seq-opt)] VOID [reduce using rule 83 (attribute-specifier-seq-opt)] STATIC [reduce using rule 83 (attribute-specifier-seq-opt)] THREAD_LOCAL [reduce using rule 83 (attribute-specifier-seq-opt)] MUTABLE [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 60 declaration-seq go to state 61 declaration-seq-opt go to state 828 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-body go to state 1118 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113
676 static_assert-declaration → STATIC_ASSERT OPEN_PAREN constant-expression COMMA string-literal CLOSE_PAREN • SEMICOLON SEMICOLON shift, and go to state 1119
443 named-namespace-definition → INLINE-opt NAMESPACE attribute-specifier-seq-opt IDENTIFIER OPEN_BRACE namespace-body • CLOSE_BRACE CLOSE_BRACE shift, and go to state 1120
753 unnamed-namespace-definition → INLINE-opt NAMESPACE attribute-specifier-seq-opt OPEN_BRACE namespace-body CLOSE_BRACE • $default reduce using rule 753 (unnamed-namespace-definition)
766 using-directive → attribute-specifier-seq-opt USING NAMESPACE nested-name-specifier-opt namespace-name SEMICOLON • $default reduce using rule 766 (using-directive)
46 alignment-specifier → ALIGNAS OPEN_PAREN constant-expression ELLIPSIS-opt CLOSE_PAREN • $default reduce using rule 46 (alignment-specifier)
45 alignment-specifier → ALIGNAS OPEN_PAREN type-id ELLIPSIS-opt CLOSE_PAREN • $default reduce using rule 45 (alignment-specifier)
49 asm-declaration → attribute-specifier-seq-opt ASM OPEN_PAREN string-literal CLOSE_PAREN SEMICOLON • $default reduce using rule 49 (asm-declaration)
87 attribute-using-prefix → USING attribute-namespace COLON • $default reduce using rule 87 (attribute-using-prefix)
74 attribute-list → attribute ELLIPSIS • $default reduce using rule 74 (attribute-list)
67 attribute → • attribute-token attribute-argument-clause-opt 73 attribute-list → attribute-list COMMA • attribute-opt 75 | attribute-list COMMA • attribute ELLIPSIS 76 attribute-namespace → • IDENTIFIER 77 attribute-opt → • %empty [COMMA, CLOSE_SQUARE] 78 | • attribute 79 attribute-scoped-token → • attribute-namespace SCOPE IDENTIFIER 85 attribute-token → • IDENTIFIER 86 | • attribute-scoped-token IDENTIFIER shift, and go to state 836 $default reduce using rule 77 (attribute-opt) attribute go to state 1121 attribute-namespace go to state 839 attribute-opt go to state 1122 attribute-scoped-token go to state 841 attribute-token go to state 842
80 attribute-specifier → OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE • CLOSE_SQUARE CLOSE_SQUARE shift, and go to state 1123
79 attribute-scoped-token → attribute-namespace SCOPE • IDENTIFIER IDENTIFIER shift, and go to state 1124
68 attribute-argument-clause → OPEN_PAREN • balanced-token-seq-opt CLOSE_PAREN 91 balanced-token → • OPEN_PAREN balanced-token-seq-opt CLOSE_PAREN 92 | • OPEN_SQUARE balanced-token-seq-opt CLOSE_SQUARE 93 | • OPEN_BRACE balanced-token-seq-opt CLOSE_BRACE 94 | • BALANCED_TOKEN 95 balanced-token-seq → • balanced-token 96 | • balanced-token-seq balanced-token 97 balanced-token-seq-opt → • %empty [CLOSE_PAREN] 98 | • balanced-token-seq OPEN_PAREN shift, and go to state 1125 OPEN_SQUARE shift, and go to state 1126 OPEN_BRACE shift, and go to state 1127 BALANCED_TOKEN shift, and go to state 1128 $default reduce using rule 97 (balanced-token-seq-opt) balanced-token go to state 1129 balanced-token-seq go to state 1130 balanced-token-seq-opt go to state 1131
70 attribute-argument-clause-opt → attribute-argument-clause • $default reduce using rule 70 (attribute-argument-clause-opt)
67 attribute → attribute-token attribute-argument-clause-opt • $default reduce using rule 67 (attribute)
343 identifier-list → identifier-list COMMA • IDENTIFIER IDENTIFIER shift, and go to state 1132
116 brace-or-equal-initializer → • EQ initializer-clause 117 | • braced-init-list 120 braced-init-list → • OPEN_BRACE initializer-list COMMA-opt CLOSE_BRACE 121 | • OPEN_BRACE designated-initializer-list COMMA-opt CLOSE_BRACE 122 | • OPEN_BRACE CLOSE_BRACE 359 initializer → • brace-or-equal-initializer 360 | • OPEN_PAREN expression-list CLOSE_PAREN 641 simple-declaration → attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE • initializer SEMICOLON EQ shift, and go to state 376 OPEN_PAREN shift, and go to state 377 OPEN_BRACE shift, and go to state 378 brace-or-equal-initializer go to state 380 braced-init-list go to state 381 initializer go to state 1133
326 function-body → EQ DELETE • SEMICOLON SEMICOLON shift, and go to state 1134
325 function-body → EQ DEFAULT • SEMICOLON SEMICOLON shift, and go to state 1135
137 class-name → IDENTIFIER • [SCOPE] 246 enum-name → IDENTIFIER • [SCOPE] 401 mem-initializer-id → IDENTIFIER • [OPEN_PAREN, OPEN_BRACE] 444 namespace-alias → IDENTIFIER • [SCOPE] 450 namespace-name → IDENTIFIER • [SCOPE] 695 template-name → IDENTIFIER • [LESS] 730 typedef-name → IDENTIFIER • [SCOPE] SCOPE reduce using rule 137 (class-name) SCOPE [reduce using rule 246 (enum-name)] SCOPE [reduce using rule 444 (namespace-alias)] SCOPE [reduce using rule 450 (namespace-name)] SCOPE [reduce using rule 730 (typedef-name)] LESS reduce using rule 695 (template-name) $default reduce using rule 401 (mem-initializer-id)
400 mem-initializer-id → class-or-decltype • $default reduce using rule 400 (mem-initializer-id)
5 ELLIPSIS-opt → • %empty [COMMA, OPEN_BRACE] 6 | • ELLIPSIS 402 mem-initializer-list → mem-initializer • ELLIPSIS-opt ELLIPSIS shift, and go to state 155 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 1136
120 braced-init-list → • OPEN_BRACE initializer-list COMMA-opt CLOSE_BRACE 121 | • OPEN_BRACE designated-initializer-list COMMA-opt CLOSE_BRACE 122 | • OPEN_BRACE CLOSE_BRACE 398 mem-initializer → mem-initializer-id • OPEN_PAREN expression-list-opt CLOSE_PAREN 399 | mem-initializer-id • braced-init-list OPEN_PAREN shift, and go to state 1137 OPEN_BRACE shift, and go to state 378 braced-init-list go to state 1138
172 ctor-initializer → COLON mem-initializer-list • [OPEN_BRACE] 403 mem-initializer-list → mem-initializer-list • COMMA mem-initializer ELLIPSIS-opt COMMA shift, and go to state 1139 $default reduce using rule 172 (ctor-initializer)
149 compound-statement → • OPEN_BRACE statement-seq-opt CLOSE_BRACE 331 function-try-block → TRY ctor-initializer-opt • compound-statement handler-seq OPEN_BRACE shift, and go to state 792 compound-statement go to state 1140
323 function-body → ctor-initializer-opt compound-statement • $default reduce using rule 323 (function-body)
553 parameters-and-qualifiers → OPEN_PAREN parameter-declaration-clause CLOSE_PAREN cv-qualifier-seq-opt • ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt 601 ref-qualifier → • AND 602 | • AND_AND 603 ref-qualifier-opt → • %empty [COMMA, ELLIPSIS, NOEXCEPT, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, OPEN_SQUARE, COLON, OPEN_BRACE, FINAL, DEREF, GREATER, TRY, REQUIRES, OVERRIDE] 604 | • ref-qualifier AND shift, and go to state 337 AND_AND shift, and go to state 338 $default reduce using rule 603 (ref-qualifier-opt) ref-qualifier go to state 339 ref-qualifier-opt go to state 1141
548 parameter-declaration-clause → parameter-declaration-list COMMA ELLIPSIS • $default reduce using rule 548 (parameter-declaration-clause)
550 parameter-declaration-list → parameter-declaration-list COMMA parameter-declaration • $default reduce using rule 550 (parameter-declaration-list)
45 alignment-specifier → • ALIGNAS OPEN_PAREN type-id ELLIPSIS-opt CLOSE_PAREN 46 | • ALIGNAS OPEN_PAREN constant-expression ELLIPSIS-opt CLOSE_PAREN 80 attribute-specifier → • OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE 81 | • alignment-specifier 82 attribute-specifier-seq → attribute-specifier-seq-opt • attribute-specifier 492 noptr-declarator → noptr-declarator OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt • [COMMA, ELLIPSIS, EQ, SEMICOLON, OPEN_PAREN, CLOSE_PAREN, OPEN_SQUARE, COLON, OPEN_BRACE, FINAL, GREATER, TRY, REQUIRES, OVERRIDE] ALIGNAS shift, and go to state 157 OPEN_SQUARE shift, and go to state 161 OPEN_SQUARE [reduce using rule 492 (noptr-declarator)] $default reduce using rule 492 (noptr-declarator) alignment-specifier go to state 165 attribute-specifier go to state 166
45 alignment-specifier → • ALIGNAS OPEN_PAREN type-id ELLIPSIS-opt CLOSE_PAREN 46 | • ALIGNAS OPEN_PAREN constant-expression ELLIPSIS-opt CLOSE_PAREN 80 attribute-specifier → • OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE 81 | • alignment-specifier 82 attribute-specifier-seq → attribute-specifier-seq-opt • attribute-specifier 418 member-declarator → IDENTIFIER-opt attribute-specifier-seq-opt • COLON constant-expression brace-or-equal-initializer-opt ALIGNAS shift, and go to state 157 OPEN_SQUARE shift, and go to state 161 COLON shift, and go to state 1142 alignment-specifier go to state 165 attribute-specifier go to state 166
119 brace-or-equal-initializer-opt → brace-or-equal-initializer • $default reduce using rule 119 (brace-or-equal-initializer-opt)
417 member-declarator → declarator brace-or-equal-initializer-opt • $default reduce using rule 417 (member-declarator)
172 ctor-initializer → • COLON mem-initializer-list 173 ctor-initializer-opt → • %empty [OPEN_BRACE] 174 | • ctor-initializer 323 function-body → • ctor-initializer-opt compound-statement 324 | • function-try-block 325 | • EQ DEFAULT SEMICOLON 326 | • EQ DELETE SEMICOLON 328 function-definition → attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause • function-body 331 function-try-block → • TRY ctor-initializer-opt compound-statement handler-seq 416 member-declarator → declarator requires-clause • [COMMA, SEMICOLON] EQ shift, and go to state 846 COLON shift, and go to state 847 TRY shift, and go to state 848 OPEN_BRACE reduce using rule 173 (ctor-initializer-opt) $default reduce using rule 416 (member-declarator) ctor-initializer go to state 849 ctor-initializer-opt go to state 850 function-body go to state 851 function-try-block go to state 852
172 ctor-initializer → • COLON mem-initializer-list 173 ctor-initializer-opt → • %empty [OPEN_BRACE] 174 | • ctor-initializer 323 function-body → • ctor-initializer-opt compound-statement 324 | • function-try-block 325 | • EQ DEFAULT SEMICOLON 326 | • EQ DELETE SEMICOLON 327 function-definition → attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt • function-body 331 function-try-block → • TRY ctor-initializer-opt compound-statement handler-seq 415 member-declarator → declarator virt-specifier-seq-opt • pure-specifier-opt 596 pure-specifier → • EQ '0' 597 pure-specifier-opt → • %empty [COMMA, SEMICOLON] 598 | • pure-specifier EQ shift, and go to state 1143 COLON shift, and go to state 847 TRY shift, and go to state 848 OPEN_BRACE reduce using rule 173 (ctor-initializer-opt) $default reduce using rule 597 (pure-specifier-opt) ctor-initializer go to state 849 ctor-initializer-opt go to state 850 function-body go to state 854 function-try-block go to state 852 pure-specifier go to state 1144 pure-specifier-opt go to state 1145
5 ELLIPSIS-opt → • %empty [IDENTIFIER, SCOPE, OPERATOR, DECLTYPE, COMPL] 6 | • ELLIPSIS 11 IDENTIFIER-opt → • %empty [ALIGNAS, OPEN_SQUARE, COLON] 12 | • IDENTIFIER 137 class-name → • IDENTIFIER 138 | • simple-template-id 211 declarator → • ptr-declarator 212 | • noptr-declarator parameters-and-qualifiers trailing-return-type 213 declarator-id → • ELLIPSIS-opt id-expression 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 415 member-declarator → • declarator virt-specifier-seq-opt pure-specifier-opt 416 | • declarator requires-clause 417 | • declarator brace-or-equal-initializer-opt 418 | • IDENTIFIER-opt attribute-specifier-seq-opt COLON constant-expression brace-or-equal-initializer-opt 420 member-declarator-list → member-declarator-list COMMA • member-declarator 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 490 noptr-declarator → • declarator-id attribute-specifier-seq-opt 491 | • noptr-declarator parameters-and-qualifiers 492 | • noptr-declarator OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 493 | • OPEN_PAREN ptr-declarator CLOSE_PAREN 590 ptr-declarator → • noptr-declarator 591 | • ptr-operator ptr-declarator 592 ptr-operator → • MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 593 | • AND attribute-specifier-seq-opt 594 | • AND_AND attribute-specifier-seq-opt 595 | • nested-name-specifier MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id ELLIPSIS shift, and go to state 155 IDENTIFIER shift, and go to state 862 SCOPE shift, and go to state 6 OPEN_PAREN shift, and go to state 158 AND shift, and go to state 159 AND_AND shift, and go to state 162 DECLTYPE shift, and go to state 21 MULT shift, and go to state 163 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] SCOPE [reduce using rule 5 (ELLIPSIS-opt)] OPERATOR reduce using rule 5 (ELLIPSIS-opt) DECLTYPE [reduce using rule 5 (ELLIPSIS-opt)] COMPL reduce using rule 5 (ELLIPSIS-opt) $default reduce using rule 11 (IDENTIFIER-opt) ELLIPSIS-opt go to state 164 IDENTIFIER-opt go to state 863 class-name go to state 55 declarator go to state 1146 declarator-id go to state 170 decltype-specifier go to state 120 enum-name go to state 71 member-declarator go to state 1147 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 noptr-declarator go to state 172 ptr-declarator go to state 173 ptr-operator go to state 174 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
404 member-declaration → attribute-specifier-seq-opt decl-specifier-seq-opt member-declarator-list-opt SEMICOLON • $default reduce using rule 404 (member-declaration)
40 access-specifier-opt → access-specifier • $default reduce using rule 40 (access-specifier-opt)
103 base-specifier → attribute-specifier-seq-opt VIRTUAL access-specifier-opt • class-or-decltype 137 class-name → • IDENTIFIER 138 | • simple-template-id 139 class-or-decltype → • nested-name-specifier-opt type-name 140 | • nested-name-specifier TEMPLATE simple-template-id 141 | • decltype-specifier 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 DECLTYPE shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] class-name go to state 55 class-or-decltype go to state 1148 decltype-specifier go to state 872 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 873 nested-name-specifier-opt go to state 874 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
28 VIRTUAL-opt → VIRTUAL • $default reduce using rule 28 (VIRTUAL-opt)
104 base-specifier → attribute-specifier-seq-opt access-specifier VIRTUAL-opt • class-or-decltype 137 class-name → • IDENTIFIER 138 | • simple-template-id 139 class-or-decltype → • nested-name-specifier-opt type-name 140 | • nested-name-specifier TEMPLATE simple-template-id 141 | • decltype-specifier 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 DECLTYPE shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] class-name go to state 55 class-or-decltype go to state 1149 decltype-specifier go to state 872 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 873 nested-name-specifier-opt go to state 874 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
22 TEMPLATE-opt → TEMPLATE • [IDENTIFIER] 140 class-or-decltype → nested-name-specifier TEMPLATE • simple-template-id 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER IDENTIFIER shift, and go to state 191 IDENTIFIER [reduce using rule 22 (TEMPLATE-opt)] simple-template-id go to state 1150 template-name go to state 102
139 class-or-decltype → nested-name-specifier-opt type-name • $default reduce using rule 139 (class-or-decltype)
5 ELLIPSIS-opt → • %empty [COMMA, OPEN_BRACE] 6 | • ELLIPSIS 106 base-specifier-list → base-specifier-list COMMA base-specifier • ELLIPSIS-opt ELLIPSIS shift, and go to state 155 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 1151
5 ELLIPSIS-opt → • %empty [COMMA, CLOSE_PAREN, CLOSE_SQUARE, CLOSE_BRACE] 6 | • ELLIPSIS 364 initializer-list → initializer-list COMMA initializer-clause • ELLIPSIS-opt ELLIPSIS shift, and go to state 155 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 1152
226 designated-initializer-list → designated-initializer-list COMMA designated-initializer-clause • $default reduce using rule 226 (designated-initializer-list)
121 braced-init-list → OPEN_BRACE designated-initializer-list COMMA-opt CLOSE_BRACE • $default reduce using rule 121 (braced-init-list)
120 braced-init-list → OPEN_BRACE initializer-list COMMA-opt CLOSE_BRACE • $default reduce using rule 120 (braced-init-list)
163 constraint-logical-and-expression → constraint-logical-and-expression AND_AND primary-expression • $default reduce using rule 163 (constraint-logical-and-expression)
163 constraint-logical-and-expression → constraint-logical-and-expression • AND_AND primary-expression 165 constraint-logical-or-expression → constraint-logical-or-expression OR_OR constraint-logical-and-expression • [COMMA, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, SCOPE, TEMPLATE, TYPENAME, VIRTUAL, USING, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, AND, ASM, OPEN_SQUARE, COLON, OPEN_BRACE, CLASS, STRUCT, UNION, CONCEPT, AND_AND, OR_OR, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DEREF, ENUM, EXPLICIT, MULT, TRY, IMPORT, NAMESPACE, COMPL, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE] AND_AND shift, and go to state 887 AND_AND [reduce using rule 165 (constraint-logical-or-expression)] $default reduce using rule 165 (constraint-logical-or-expression)
215 deduction-guide → explicit-specifier-opt template-name OPEN_PAREN parameter-declaration-clause CLOSE_PAREN DEREF • simple-template-id SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER IDENTIFIER shift, and go to state 191 simple-template-id go to state 1153 template-name go to state 102
45 alignment-specifier → • ALIGNAS OPEN_PAREN type-id ELLIPSIS-opt CLOSE_PAREN 46 | • ALIGNAS OPEN_PAREN constant-expression ELLIPSIS-opt CLOSE_PAREN 80 attribute-specifier → • OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE 81 | • alignment-specifier 82 attribute-specifier-seq → attribute-specifier-seq-opt • attribute-specifier 427 module-declaration → EXPORT-opt MODULE module-name module-partition-opt attribute-specifier-seq-opt • SEMICOLON SEMICOLON shift, and go to state 1154 ALIGNAS shift, and go to state 157 OPEN_SQUARE shift, and go to state 161 alignment-specifier go to state 165 attribute-specifier go to state 166
583 private-module-fragment → MODULE COLON PRIVATE • SEMICOLON declaration-seq-opt SEMICOLON shift, and go to state 1155
150 concept-definition → CONCEPT concept-name EQ constraint-expression SEMICOLON • $default reduce using rule 150 (concept-definition)
229 elaborated-type-specifier → class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER • $default reduce using rule 229 (elaborated-type-specifier)
686 template-argument-list → template-argument-list COMMA template-argument ELLIPSIS-opt • $default reduce using rule 686 (template-argument-list)
482 noptr-abstract-declarator → noptr-abstract-declarator-opt parameters-and-qualifiers • $default reduce using rule 482 (noptr-abstract-declarator)
484 noptr-abstract-declarator → OPEN_PAREN ptr-abstract-declarator CLOSE_PAREN • $default reduce using rule 484 (noptr-abstract-declarator)
483 noptr-abstract-declarator → noptr-abstract-declarator-opt OPEN_SQUARE constant-expression-opt • CLOSE_SQUARE attribute-specifier-seq-opt CLOSE_SQUARE shift, and go to state 1156
30 abstract-declarator → noptr-abstract-declarator-opt parameters-and-qualifiers trailing-return-type • $default reduce using rule 30 (abstract-declarator)
488 noptr-abstract-pack-declarator → noptr-abstract-pack-declarator OPEN_SQUARE constant-expression-opt • CLOSE_SQUARE attribute-specifier-seq-opt CLOSE_SQUARE shift, and go to state 1157
5 ELLIPSIS-opt → • %empty [IDENTIFIER, SCOPE, OPERATOR, DECLTYPE, COMPL] 6 | • ELLIPSIS 137 class-name → • IDENTIFIER 138 | • simple-template-id 213 declarator-id → • ELLIPSIS-opt id-expression 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 482 noptr-abstract-declarator → • noptr-abstract-declarator-opt parameters-and-qualifiers 483 | • noptr-abstract-declarator-opt OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 484 | • OPEN_PAREN ptr-abstract-declarator CLOSE_PAREN 485 noptr-abstract-declarator-opt → • %empty [OPEN_PAREN, OPEN_SQUARE] 486 | • noptr-abstract-declarator 490 noptr-declarator → • declarator-id attribute-specifier-seq-opt 491 | • noptr-declarator parameters-and-qualifiers 492 | • noptr-declarator OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 493 | • OPEN_PAREN ptr-declarator CLOSE_PAREN 586 ptr-abstract-declarator → • noptr-abstract-declarator 587 | • ptr-operator ptr-abstract-declarator-opt 587 | ptr-operator • ptr-abstract-declarator-opt 588 ptr-abstract-declarator-opt → • %empty [CLOSE_PAREN] 589 | • ptr-abstract-declarator 590 ptr-declarator → • noptr-declarator 591 | • ptr-operator ptr-declarator 591 | ptr-operator • ptr-declarator 592 ptr-operator → • MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 593 | • AND attribute-specifier-seq-opt 594 | • AND_AND attribute-specifier-seq-opt 595 | • nested-name-specifier MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id ELLIPSIS shift, and go to state 155 IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 OPEN_PAREN shift, and go to state 915 AND shift, and go to state 159 AND_AND shift, and go to state 162 DECLTYPE shift, and go to state 21 MULT shift, and go to state 163 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] SCOPE [reduce using rule 5 (ELLIPSIS-opt)] OPEN_PAREN [reduce using rule 485 (noptr-abstract-declarator-opt)] CLOSE_PAREN reduce using rule 588 (ptr-abstract-declarator-opt) OPEN_SQUARE reduce using rule 485 (noptr-abstract-declarator-opt) DECLTYPE [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 164 class-name go to state 55 declarator-id go to state 170 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 noptr-abstract-declarator go to state 685 noptr-abstract-declarator-opt go to state 903 noptr-declarator go to state 327 ptr-abstract-declarator go to state 911 ptr-abstract-declarator-opt go to state 912 ptr-declarator go to state 348 ptr-operator go to state 1050 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 90 await-expression → • CO_AWAIT cast-expression 120 braced-init-list → • OPEN_BRACE initializer-list COMMA-opt CLOSE_BRACE 121 | • OPEN_BRACE designated-initializer-list COMMA-opt CLOSE_BRACE 122 | • OPEN_BRACE CLOSE_BRACE 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 361 initializer-clause → • assignment-expression 362 | • braced-init-list 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 546 parameter-declaration → attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt EQ • initializer-clause 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPEN_BRACE shift, and go to state 378 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 640 await-expression go to state 268 braced-init-list go to state 641 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 initializer-clause go to state 1158 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 90 await-expression → • CO_AWAIT cast-expression 120 braced-init-list → • OPEN_BRACE initializer-list COMMA-opt CLOSE_BRACE 121 | • OPEN_BRACE designated-initializer-list COMMA-opt CLOSE_BRACE 122 | • OPEN_BRACE CLOSE_BRACE 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 361 initializer-clause → • assignment-expression 362 | • braced-init-list 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 544 parameter-declaration → attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator EQ • initializer-clause 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPEN_BRACE shift, and go to state 378 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 640 await-expression go to state 268 braced-init-list go to state 641 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 initializer-clause go to state 1159 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
720 type-parameter → template-head type-parameter-key IDENTIFIER-opt EQ id-expression • $default reduce using rule 720 (type-parameter)
286 fold-expression → OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN • $default reduce using rule 286 (fold-expression)
285 fold-expression → OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN • $default reduce using rule 285 (fold-expression)
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator • cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 await-expression go to state 268 cast-expression go to state 1160 class-name go to state 55 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 fold-expression go to state 277 id-expression go to state 278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 requires-expression go to state 295 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
347 init-capture → AND ELLIPSIS-opt IDENTIFIER initializer • $default reduce using rule 347 (init-capture)
498 operator-function-id → OPERATOR overloadable-operator LESS template-argument-list-opt GREATER • $default reduce using rule 498 (operator-function-id)
21 TEMPLATE-opt → • %empty [IDENTIFIER] 22 | • TEMPLATE 456 nested-name-specifier → nested-name-specifier • IDENTIFIER SCOPE 457 | nested-name-specifier • TEMPLATE-opt simple-template-id SCOPE 459 nested-name-specifier-opt → nested-name-specifier • [IDENTIFIER] 732 typename-specifier → TYPENAME nested-name-specifier • IDENTIFIER 733 | TYPENAME nested-name-specifier • TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 228 TEMPLATE shift, and go to state 229 IDENTIFIER [reduce using rule 21 (TEMPLATE-opt)] IDENTIFIER [reduce using rule 459 (nested-name-specifier-opt)] TEMPLATE-opt go to state 230
137 class-name → • IDENTIFIER 138 | • simple-template-id 246 enum-name → • IDENTIFIER 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 723 type-requirement → TYPENAME nested-name-specifier-opt • type-name SEMICOLON 730 typedef-name → • IDENTIFIER 731 | • simple-template-id IDENTIFIER shift, and go to state 505 class-name go to state 55 enum-name go to state 71 simple-template-id go to state 96 template-name go to state 102 type-name go to state 1161 typedef-name go to state 108
148 compound-requirement → OPEN_BRACE expression • CLOSE_BRACE NOEXCEPT-opt return-type-requirement-opt SEMICOLON 278 expression → expression • COMMA assignment-expression COMMA shift, and go to state 532 CLOSE_BRACE shift, and go to state 1162
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, EXTERN, IDENTIFIER, INLINE, SCOPE, THIS, TYPENAME, VIRTUAL, ALIGNAS, OPEN_SQUARE, CLASS, STRUCT, UNION, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 84 | • attribute-specifier-seq 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 130 | OPEN_PAREN • type-id CLOSE_PAREN cast-expression 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 175 cv-qualifier → • CONST 176 | • VOLATILE 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 277 expression → • assignment-expression 278 | • expression COMMA assignment-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 285 | OPEN_PAREN • cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 286 | OPEN_PAREN • ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | OPEN_PAREN • cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 543 parameter-declaration → • attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator 544 | • attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator EQ initializer-clause 545 | • attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt 546 | • attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt EQ initializer-clause 547 parameter-declaration-clause → • parameter-declaration-list-opt ELLIPSIS-opt 548 | • parameter-declaration-list COMMA ELLIPSIS 549 parameter-declaration-list → • parameter-declaration 550 | • parameter-declaration-list COMMA parameter-declaration 551 parameter-declaration-list-opt → • %empty [ELLIPSIS, CLOSE_PAREN] 552 | • parameter-declaration-list 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 578 | OPEN_PAREN • expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 615 requirement-parameter-list → OPEN_PAREN • parameter-declaration-clause CLOSE_PAREN 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 711 type-id → • type-specifier-seq abstract-declarator-opt 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 728 type-specifier-seq → • type-specifier attribute-specifier-seq-opt 729 | • type-specifier type-specifier-seq 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list ELLIPSIS shift, and go to state 437 IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 OPERATOR shift, and go to state 248 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 124 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 ELLIPSIS [reduce using rule 551 (parameter-declaration-list-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] THIS [reduce using rule 83 (attribute-specifier-seq-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] CLOSE_PAREN reduce using rule 551 (parameter-declaration-list-opt) OPEN_SQUARE [reduce using rule 83 (attribute-specifier-seq-opt)] CLASS [reduce using rule 83 (attribute-specifier-seq-opt)] STRUCT [reduce using rule 83 (attribute-specifier-seq-opt)] UNION [reduce using rule 83 (attribute-specifier-seq-opt)] CONST [reduce using rule 83 (attribute-specifier-seq-opt)] VOLATILE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] DELETE reduce using rule 19 (SCOPE-opt) ENUM [reduce using rule 83 (attribute-specifier-seq-opt)] NEW reduce using rule 19 (SCOPE-opt) AUTO reduce using rule 83 (attribute-specifier-seq-opt) AUTO [reduce using rule 709 (type-constraint-opt)] CHAR [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR8_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR16_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR32_T [reduce using rule 83 (attribute-specifier-seq-opt)] WCHAR_T [reduce using rule 83 (attribute-specifier-seq-opt)] BOOL [reduce using rule 83 (attribute-specifier-seq-opt)] SHORT [reduce using rule 83 (attribute-specifier-seq-opt)] INT [reduce using rule 83 (attribute-specifier-seq-opt)] LONG [reduce using rule 83 (attribute-specifier-seq-opt)] SIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] UNSIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] FLOAT [reduce using rule 83 (attribute-specifier-seq-opt)] DOUBLE [reduce using rule 83 (attribute-specifier-seq-opt)] VOID [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 219 await-expression go to state 268 cast-expression go to state 438 class-key go to state 404 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 cv-qualifier go to state 57 decltype-specifier go to state 63 delete-expression go to state 273 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 439 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 parameter-declaration go to state 617 parameter-declaration-clause go to state 761 parameter-declaration-list go to state 619 parameter-declaration-list-opt go to state 620 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 407 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-id go to state 440 type-name go to state 106 type-specifier go to state 412 type-specifier-seq go to state 413 typedef-name go to state 108 typename-specifier go to state 414 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
461 nested-requirement → REQUIRES constraint-expression • SEMICOLON SEMICOLON shift, and go to state 1163
642 simple-requirement → expression SEMICOLON • $default reduce using rule 642 (simple-requirement)
614 requirement-body → OPEN_BRACE requirement-seq CLOSE_BRACE • $default reduce using rule 614 (requirement-body)
619 requirement-seq → requirement-seq requirement • $default reduce using rule 619 (requirement-seq)
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 277 expression → • assignment-expression 278 | • expression COMMA assignment-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 570 | DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN • expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 1164 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 277 expression → • assignment-expression 278 | • expression COMMA assignment-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | STATIC_CAST LESS type-id GREATER OPEN_PAREN • expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 1165 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 277 expression → • assignment-expression 278 | • expression COMMA assignment-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN • expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 1166 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 277 expression → • assignment-expression 278 | • expression COMMA assignment-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | CONST_CAST LESS type-id GREATER OPEN_PAREN • expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 1167 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
742 unary-expression → SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN • $default reduce using rule 742 (unary-expression)
223 delete-expression → SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression • $default reduce using rule 223 (delete-expression)
472 new-placement → OPEN_PAREN expression-list CLOSE_PAREN • $default reduce using rule 472 (new-placement)
467 new-expression → SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id • CLOSE_PAREN new-initializer-opt CLOSE_PAREN shift, and go to state 1168
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 90 await-expression → • CO_AWAIT cast-expression 120 braced-init-list → • OPEN_BRACE initializer-list COMMA-opt CLOSE_BRACE 121 | • OPEN_BRACE designated-initializer-list COMMA-opt CLOSE_BRACE 122 | • OPEN_BRACE CLOSE_BRACE 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 279 expression-list → • initializer-list 280 expression-list-opt → • %empty [CLOSE_PAREN] 281 | • expression-list 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 361 initializer-clause → • assignment-expression 362 | • braced-init-list 363 initializer-list → • initializer-clause ELLIPSIS-opt 364 | • initializer-list COMMA initializer-clause ELLIPSIS-opt 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 468 new-initializer → OPEN_PAREN • expression-list-opt CLOSE_PAREN 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPEN_BRACE shift, and go to state 378 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] CLOSE_PAREN reduce using rule 280 (expression-list-opt) DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 640 await-expression go to state 268 braced-init-list go to state 641 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression-list go to state 808 expression-list-opt go to state 1169 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 initializer-clause go to state 644 initializer-list go to state 645 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
469 new-initializer → braced-init-list • $default reduce using rule 469 (new-initializer)
471 new-initializer-opt → new-initializer • $default reduce using rule 471 (new-initializer-opt)
466 new-expression → SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt • $default reduce using rule 466 (new-expression)
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 277 expression → • assignment-expression 278 | • expression COMMA assignment-expression 282 expression-opt → • %empty [CLOSE_SQUARE] 283 | • expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 494 noptr-new-declarator → OPEN_SQUARE • expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] CLOSE_SQUARE reduce using rule 282 (expression-opt) DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 1108 expression-opt go to state 1170 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
465 new-declarator-opt → new-declarator • $default reduce using rule 465 (new-declarator-opt)
475 new-type-id → type-specifier-seq new-declarator-opt • $default reduce using rule 475 (new-type-id)
463 new-declarator → noptr-new-declarator • [COMMA, ELLIPSIS, PLUS, MINUS, EQ, SEMICOLON, OPEN_PAREN, CLOSE_PAREN, AND, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, SPACESHIP, QUERY, AND_AND, OR_OR, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR] 495 noptr-new-declarator → noptr-new-declarator • OPEN_SQUARE constant-expression CLOSE_SQUARE attribute-specifier-seq-opt OPEN_SQUARE shift, and go to state 1171 $default reduce using rule 463 (new-declarator)
137 class-name → • IDENTIFIER 138 | • simple-template-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 462 new-declarator → • ptr-operator new-declarator-opt 462 | ptr-operator • new-declarator-opt 463 | • noptr-new-declarator 464 new-declarator-opt → • %empty [COMMA, ELLIPSIS, PLUS, MINUS, EQ, SEMICOLON, OPEN_PAREN, CLOSE_PAREN, AND, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, SPACESHIP, QUERY, AND_AND, OR_OR, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR] 465 | • new-declarator 494 noptr-new-declarator → • OPEN_SQUARE expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 495 | • noptr-new-declarator OPEN_SQUARE constant-expression CLOSE_SQUARE attribute-specifier-seq-opt 592 ptr-operator → • MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 593 | • AND attribute-specifier-seq-opt 594 | • AND_AND attribute-specifier-seq-opt 595 | • nested-name-specifier MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 AND shift, and go to state 159 OPEN_SQUARE shift, and go to state 1079 AND_AND shift, and go to state 162 DECLTYPE shift, and go to state 21 MULT shift, and go to state 163 AND [reduce using rule 464 (new-declarator-opt)] AND_AND [reduce using rule 464 (new-declarator-opt)] MULT [reduce using rule 464 (new-declarator-opt)] $default reduce using rule 464 (new-declarator-opt) class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 new-declarator go to state 1080 new-declarator-opt go to state 1172 noptr-new-declarator go to state 1082 ptr-operator go to state 1083 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
385 lambda-declarator → OPEN_PAREN parameter-declaration-clause CLOSE_PAREN lambda-specifiers • requires-clause-opt 620 requires-clause → • REQUIRES constraint-logical-or-expression 621 requires-clause-opt → • %empty [OPEN_BRACE] 622 | • requires-clause REQUIRES shift, and go to state 379 $default reduce using rule 621 (requires-clause-opt) requires-clause go to state 696 requires-clause-opt go to state 1173
131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 191 decl-specifier-seq-opt → • %empty [NOEXCEPT, ALIGNAS, OPEN_SQUARE, OPEN_BRACE, DEREF] 192 | • decl-specifier-seq 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 384 lambda-declarator → • lambda-specifiers 385 | • OPEN_PAREN parameter-declaration-clause CLOSE_PAREN lambda-specifiers requires-clause-opt 387 lambda-expression → lambda-introducer LESS template-parameter-list GREATER requires-clause-opt • lambda-declarator compound-statement 389 lambda-specifiers → • decl-specifier-seq-opt noexcept-specifier-opt attribute-specifier-seq-opt trailing-return-type-opt 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id CONSTEXPR shift, and go to state 1 EXTERN shift, and go to state 149 IDENTIFIER shift, and go to state 4 INLINE shift, and go to state 150 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 OPEN_PAREN shift, and go to state 535 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 191 (decl-specifier-seq-opt) class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 537 decl-specifier-seq-opt go to state 538 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 153 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 lambda-declarator go to state 1174 lambda-specifiers go to state 540 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109
478 noexcept-specifier → NOEXCEPT OPEN_PAREN constant-expression • CLOSE_PAREN CLOSE_PAREN shift, and go to state 1175
703 trailing-return-type-opt → trailing-return-type • $default reduce using rule 703 (trailing-return-type-opt)
389 lambda-specifiers → decl-specifier-seq-opt noexcept-specifier-opt attribute-specifier-seq-opt trailing-return-type-opt • $default reduce using rule 389 (lambda-specifiers)
445 namespace-alias-definition → NAMESPACE IDENTIFIER • EQ qualified-namespace-specifier SEMICOLON EQ shift, and go to state 318
137 class-name → IDENTIFIER • [SCOPE] 246 enum-name → IDENTIFIER • [SCOPE] 376 labeled-statement → attribute-specifier-seq-opt IDENTIFIER • COLON statement 444 namespace-alias → IDENTIFIER • [SCOPE] 450 namespace-name → IDENTIFIER • [SCOPE] 695 template-name → IDENTIFIER • [LESS] 730 typedef-name → IDENTIFIER • [SCOPE] 754 unqualified-id → IDENTIFIER • [COMMA, PLUS, MINUS, EQ, SEMICOLON, OPEN_PAREN, AND, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, OPEN_SQUARE, SPACESHIP, QUERY, AND_AND, OR_OR, DEREF, DOT, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR, PLUS_PLUS, MINUS_MINUS] COLON shift, and go to state 1176 SCOPE reduce using rule 137 (class-name) SCOPE [reduce using rule 246 (enum-name)] SCOPE [reduce using rule 444 (namespace-alias)] SCOPE [reduce using rule 450 (namespace-name)] SCOPE [reduce using rule 730 (typedef-name)] LESS reduce using rule 695 (template-name) LESS [reduce using rule 754 (unqualified-id)] $default reduce using rule 754 (unqualified-id)
5 ELLIPSIS-opt → • %empty [IDENTIFIER] 6 | • ELLIPSIS 80 attribute-specifier → OPEN_SQUARE • OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE 123 capture → • simple-capture 124 | • init-capture 125 capture-default → • AND 126 | • EQ 127 capture-list → • capture 128 | • capture-list COMMA capture 346 init-capture → • ELLIPSIS-opt IDENTIFIER initializer 347 | • AND ELLIPSIS-opt IDENTIFIER initializer 379 lambda-capture → • capture-default 380 | • capture-list 381 | • capture-default COMMA capture-list 382 lambda-capture-opt → • %empty [CLOSE_SQUARE] 383 | • lambda-capture 388 lambda-introducer → OPEN_SQUARE • lambda-capture-opt CLOSE_SQUARE 635 simple-capture → • IDENTIFIER ELLIPSIS-opt 636 | • AND IDENTIFIER ELLIPSIS-opt 637 | • THIS 638 | • MULT THIS ELLIPSIS shift, and go to state 155 IDENTIFIER shift, and go to state 441 THIS shift, and go to state 442 EQ shift, and go to state 443 AND shift, and go to state 444 OPEN_SQUARE shift, and go to state 331 MULT shift, and go to state 445 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 382 (lambda-capture-opt) ELLIPSIS-opt go to state 446 capture go to state 447 capture-default go to state 448 capture-list go to state 449 init-capture go to state 450 lambda-capture go to state 451 lambda-capture-opt go to state 452 simple-capture go to state 453
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 90 await-expression → • CO_AWAIT cast-expression 120 braced-init-list → • OPEN_BRACE initializer-list COMMA-opt CLOSE_BRACE 121 | • OPEN_BRACE designated-initializer-list COMMA-opt CLOSE_BRACE 122 | • OPEN_BRACE CLOSE_BRACE 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 171 coroutine-return-statement → CO_RETURN • expr-or-braced-init-list-opt SEMICOLON 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 273 expr-or-braced-init-list → • expression 274 | • braced-init-list 275 expr-or-braced-init-list-opt → • %empty [SEMICOLON] 276 | • expr-or-braced-init-list 277 expression → • assignment-expression 278 | • expression COMMA assignment-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPEN_BRACE shift, and go to state 378 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] SEMICOLON reduce using rule 275 (expr-or-braced-init-list-opt) DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 await-expression go to state 268 braced-init-list go to state 1177 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expr-or-braced-init-list go to state 1178 expr-or-braced-init-list-opt go to state 1179 expression go to state 1180 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
378 labeled-statement → attribute-specifier-seq-opt DEFAULT • COLON statement COLON shift, and go to state 1181
149 compound-statement → • OPEN_BRACE statement-seq-opt CLOSE_BRACE 706 try-block → TRY • compound-statement handler-seq OPEN_BRACE shift, and go to state 792 compound-statement go to state 1182
367 iteration-statement → WHILE • OPEN_PAREN condition CLOSE_PAREN statement OPEN_PAREN shift, and go to state 1183
44 alias-declaration → • USING IDENTIFIER attribute-specifier-seq-opt EQ defining-type-id SEMICOLON 49 asm-declaration → • attribute-specifier-seq-opt ASM OPEN_PAREN string-literal CLOSE_PAREN SEMICOLON 82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, NOT, SCOPE, THIS, TYPENAME, VIRTUAL, PLUS, MINUS, USING, SEMICOLON, ALIGNAS, OPEN_PAREN, AND, ASM, OPEN_SQUARE, CO_AWAIT, OPEN_BRACE, CLASS, STRUCT, UNION, OPERATOR, CO_RETURN, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DELETE, ENUM, EXPLICIT, MULT, DEFAULT, TRY, WHILE, DO, FOR, BREAK, CONTINUE, RETURN, GOTO, CASE, REQUIRES, NEW, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, DYNAMIC_CAST, STATIC_CAST, REINTERPRET_CAST, CONST_CAST, TYPEID, LITERAL, IF, SWITCH, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE, THROW, SIZEOF, ALIGNOF, CO_YIELD] 84 | • attribute-specifier-seq 107 block-declaration → • simple-declaration 108 | • asm-declaration 109 | • namespace-alias-definition 110 | • using-declaration 111 | • using-enum-declaration 112 | • using-directive 113 | • static_assert-declaration 114 | • alias-declaration 115 | • opaque-enum-declaration 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 210 declaration-statement → • block-declaration 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 368 iteration-statement → DO • statement WHILE OPEN_PAREN expression CLOSE_PAREN SEMICOLON 376 labeled-statement → • attribute-specifier-seq-opt IDENTIFIER COLON statement 377 | • attribute-specifier-seq-opt CASE constant-expression COLON statement 378 | • attribute-specifier-seq-opt DEFAULT COLON statement 444 namespace-alias → • IDENTIFIER 445 namespace-alias-definition → • NAMESPACE IDENTIFIER EQ qualified-namespace-specifier SEMICOLON 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 496 opaque-enum-declaration → • enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt SEMICOLON 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 639 simple-declaration → • decl-specifier-seq init-declarator-list-opt SEMICOLON 640 | • attribute-specifier-seq decl-specifier-seq init-declarator-list SEMICOLON 641 | • attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE initializer SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 663 statement → • labeled-statement 664 | • attribute-specifier-seq-opt expression-statement 665 | • attribute-specifier-seq-opt compound-statement 666 | • attribute-specifier-seq-opt selection-statement 667 | • attribute-specifier-seq-opt iteration-statement 668 | • attribute-specifier-seq-opt jump-statement 669 | • declaration-statement 670 | • attribute-specifier-seq-opt try-block 675 static_assert-declaration → • STATIC_ASSERT OPEN_PAREN constant-expression CLOSE_PAREN SEMICOLON 676 | • STATIC_ASSERT OPEN_PAREN constant-expression COMMA string-literal CLOSE_PAREN SEMICOLON 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 762 using-declaration → • USING using-declarator-list SEMICOLON 766 using-directive → • attribute-specifier-seq-opt USING NAMESPACE nested-name-specifier-opt namespace-name SEMICOLON 767 using-enum-declaration → • USING elaborated-enum-specifier SEMICOLON CONSTEXPR shift, and go to state 1 EXTERN shift, and go to state 149 IDENTIFIER shift, and go to state 4 INLINE shift, and go to state 150 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 USING shift, and go to state 10 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 NAMESPACE shift, and go to state 970 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC_ASSERT shift, and go to state 41 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 CONSTEXPR [reduce using rule 83 (attribute-specifier-seq-opt)] EXTERN [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] INLINE [reduce using rule 83 (attribute-specifier-seq-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] VIRTUAL [reduce using rule 83 (attribute-specifier-seq-opt)] USING [reduce using rule 83 (attribute-specifier-seq-opt)] CLASS [reduce using rule 83 (attribute-specifier-seq-opt)] STRUCT [reduce using rule 83 (attribute-specifier-seq-opt)] UNION [reduce using rule 83 (attribute-specifier-seq-opt)] CONST [reduce using rule 83 (attribute-specifier-seq-opt)] VOLATILE [reduce using rule 83 (attribute-specifier-seq-opt)] FRIEND [reduce using rule 83 (attribute-specifier-seq-opt)] TYPEDEF [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTEVAL [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTINIT [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] ENUM [reduce using rule 83 (attribute-specifier-seq-opt)] EXPLICIT [reduce using rule 83 (attribute-specifier-seq-opt)] AUTO reduce using rule 83 (attribute-specifier-seq-opt) AUTO [reduce using rule 709 (type-constraint-opt)] CHAR [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR8_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR16_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR32_T [reduce using rule 83 (attribute-specifier-seq-opt)] WCHAR_T [reduce using rule 83 (attribute-specifier-seq-opt)] BOOL [reduce using rule 83 (attribute-specifier-seq-opt)] SHORT [reduce using rule 83 (attribute-specifier-seq-opt)] INT [reduce using rule 83 (attribute-specifier-seq-opt)] LONG [reduce using rule 83 (attribute-specifier-seq-opt)] SIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] UNSIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] FLOAT [reduce using rule 83 (attribute-specifier-seq-opt)] DOUBLE [reduce using rule 83 (attribute-specifier-seq-opt)] VOID [reduce using rule 83 (attribute-specifier-seq-opt)] STATIC [reduce using rule 83 (attribute-specifier-seq-opt)] THREAD_LOCAL [reduce using rule 83 (attribute-specifier-seq-opt)] MUTABLE [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 971 attribute-specifier-seq-opt go to state 972 block-declaration go to state 973 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 974 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 labeled-statement go to state 975 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1184 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113
369 iteration-statement → FOR • OPEN_PAREN init-statement condition-opt SEMICOLON expression-opt CLOSE_PAREN statement 370 | FOR • OPEN_PAREN init-statement-opt for-range-declaration COLON for-range-initializer CLOSE_PAREN statement OPEN_PAREN shift, and go to state 1185
371 jump-statement → BREAK • SEMICOLON SEMICOLON shift, and go to state 1186
372 jump-statement → CONTINUE • SEMICOLON SEMICOLON shift, and go to state 1187
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 90 await-expression → • CO_AWAIT cast-expression 120 braced-init-list → • OPEN_BRACE initializer-list COMMA-opt CLOSE_BRACE 121 | • OPEN_BRACE designated-initializer-list COMMA-opt CLOSE_BRACE 122 | • OPEN_BRACE CLOSE_BRACE 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 273 expr-or-braced-init-list → • expression 274 | • braced-init-list 275 expr-or-braced-init-list-opt → • %empty [SEMICOLON] 276 | • expr-or-braced-init-list 277 expression → • assignment-expression 278 | • expression COMMA assignment-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 373 jump-statement → RETURN • expr-or-braced-init-list-opt SEMICOLON 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPEN_BRACE shift, and go to state 378 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] SEMICOLON reduce using rule 275 (expr-or-braced-init-list-opt) DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 await-expression go to state 268 braced-init-list go to state 1177 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expr-or-braced-init-list go to state 1178 expr-or-braced-init-list-opt go to state 1188 expression go to state 1180 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
375 jump-statement → GOTO • IDENTIFIER SEMICOLON IDENTIFIER shift, and go to state 1189
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 158 constant-expression → • conditional-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 377 labeled-statement → attribute-specifier-seq-opt CASE • constant-expression COLON statement 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 307 constant-expression go to state 1190 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 309 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
3 CONSTEXPR-opt → • %empty [OPEN_PAREN] 4 | • CONSTEXPR 17 NOT-opt → • %empty [CONSTEVAL] 18 | • NOT 627 selection-statement → IF • CONSTEXPR-opt OPEN_PAREN init-statement-opt condition CLOSE_PAREN statement 628 | IF • CONSTEXPR-opt OPEN_PAREN init-statement-opt condition CLOSE_PAREN statement ELSE statement 629 | IF • NOT-opt CONSTEVAL compound-statement 630 | IF • NOT-opt CONSTEVAL compound-statement ELSE statement CONSTEXPR shift, and go to state 1191 NOT shift, and go to state 1192 CONSTEVAL reduce using rule 17 (NOT-opt) $default reduce using rule 3 (CONSTEXPR-opt) CONSTEXPR-opt go to state 1193 NOT-opt go to state 1194
631 selection-statement → SWITCH • OPEN_PAREN init-statement-opt condition CLOSE_PAREN statement OPEN_PAREN shift, and go to state 1195
665 statement → attribute-specifier-seq-opt compound-statement • $default reduce using rule 665 (statement)
374 jump-statement → coroutine-return-statement • $default reduce using rule 374 (jump-statement)
601 ref-qualifier → • AND 602 | • AND_AND 603 ref-qualifier-opt → • %empty [OPEN_SQUARE] 604 | • ref-qualifier 641 simple-declaration → attribute-specifier-seq-opt decl-specifier-seq • ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE initializer SEMICOLON AND shift, and go to state 337 AND_AND shift, and go to state 338 $default reduce using rule 603 (ref-qualifier-opt) ref-qualifier go to state 339 ref-qualifier-opt go to state 340
278 expression → expression • COMMA assignment-expression 283 expression-opt → expression • [SEMICOLON, CLOSE_PAREN, CLOSE_SQUARE] COMMA shift, and go to state 532 $default reduce using rule 283 (expression-opt)
284 expression-statement → expression-opt • SEMICOLON SEMICOLON shift, and go to state 1196
664 statement → attribute-specifier-seq-opt expression-statement • $default reduce using rule 664 (statement)
667 statement → attribute-specifier-seq-opt iteration-statement • $default reduce using rule 667 (statement)
668 statement → attribute-specifier-seq-opt jump-statement • $default reduce using rule 668 (statement)
666 statement → attribute-specifier-seq-opt selection-statement • $default reduce using rule 666 (statement)
670 statement → attribute-specifier-seq-opt try-block • $default reduce using rule 670 (statement)
672 statement-seq → statement-seq statement • $default reduce using rule 672 (statement-seq)
149 compound-statement → OPEN_BRACE statement-seq-opt CLOSE_BRACE • $default reduce using rule 149 (compound-statement)
157 conditional-expression → logical-or-expression QUERY expression COLON assignment-expression • $default reduce using rule 157 (conditional-expression)
460 nested-namespace-definition → NAMESPACE enclosing-namespace-specifier SCOPE INLINE-opt IDENTIFIER OPEN_BRACE namespace-body • CLOSE_BRACE CLOSE_BRACE shift, and go to state 1197
676 static_assert-declaration → STATIC_ASSERT OPEN_PAREN constant-expression COMMA string-literal CLOSE_PAREN SEMICOLON • $default reduce using rule 676 (static_assert-declaration)
443 named-namespace-definition → INLINE-opt NAMESPACE attribute-specifier-seq-opt IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE • $default reduce using rule 443 (named-namespace-definition)
75 attribute-list → attribute-list COMMA attribute • ELLIPSIS 78 attribute-opt → attribute • [COMMA, CLOSE_SQUARE] ELLIPSIS shift, and go to state 1198 $default reduce using rule 78 (attribute-opt)
73 attribute-list → attribute-list COMMA attribute-opt • $default reduce using rule 73 (attribute-list)
80 attribute-specifier → OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE • $default reduce using rule 80 (attribute-specifier)
79 attribute-scoped-token → attribute-namespace SCOPE IDENTIFIER • $default reduce using rule 79 (attribute-scoped-token)
91 balanced-token → • OPEN_PAREN balanced-token-seq-opt CLOSE_PAREN 91 | OPEN_PAREN • balanced-token-seq-opt CLOSE_PAREN 92 | • OPEN_SQUARE balanced-token-seq-opt CLOSE_SQUARE 93 | • OPEN_BRACE balanced-token-seq-opt CLOSE_BRACE 94 | • BALANCED_TOKEN 95 balanced-token-seq → • balanced-token 96 | • balanced-token-seq balanced-token 97 balanced-token-seq-opt → • %empty [CLOSE_PAREN] 98 | • balanced-token-seq OPEN_PAREN shift, and go to state 1125 OPEN_SQUARE shift, and go to state 1126 OPEN_BRACE shift, and go to state 1127 BALANCED_TOKEN shift, and go to state 1128 $default reduce using rule 97 (balanced-token-seq-opt) balanced-token go to state 1129 balanced-token-seq go to state 1130 balanced-token-seq-opt go to state 1199
91 balanced-token → • OPEN_PAREN balanced-token-seq-opt CLOSE_PAREN 92 | • OPEN_SQUARE balanced-token-seq-opt CLOSE_SQUARE 92 | OPEN_SQUARE • balanced-token-seq-opt CLOSE_SQUARE 93 | • OPEN_BRACE balanced-token-seq-opt CLOSE_BRACE 94 | • BALANCED_TOKEN 95 balanced-token-seq → • balanced-token 96 | • balanced-token-seq balanced-token 97 balanced-token-seq-opt → • %empty [CLOSE_SQUARE] 98 | • balanced-token-seq OPEN_PAREN shift, and go to state 1125 OPEN_SQUARE shift, and go to state 1126 OPEN_BRACE shift, and go to state 1127 BALANCED_TOKEN shift, and go to state 1128 $default reduce using rule 97 (balanced-token-seq-opt) balanced-token go to state 1129 balanced-token-seq go to state 1130 balanced-token-seq-opt go to state 1200
91 balanced-token → • OPEN_PAREN balanced-token-seq-opt CLOSE_PAREN 92 | • OPEN_SQUARE balanced-token-seq-opt CLOSE_SQUARE 93 | • OPEN_BRACE balanced-token-seq-opt CLOSE_BRACE 93 | OPEN_BRACE • balanced-token-seq-opt CLOSE_BRACE 94 | • BALANCED_TOKEN 95 balanced-token-seq → • balanced-token 96 | • balanced-token-seq balanced-token 97 balanced-token-seq-opt → • %empty [CLOSE_BRACE] 98 | • balanced-token-seq OPEN_PAREN shift, and go to state 1125 OPEN_SQUARE shift, and go to state 1126 OPEN_BRACE shift, and go to state 1127 BALANCED_TOKEN shift, and go to state 1128 $default reduce using rule 97 (balanced-token-seq-opt) balanced-token go to state 1129 balanced-token-seq go to state 1130 balanced-token-seq-opt go to state 1201
94 balanced-token → BALANCED_TOKEN • $default reduce using rule 94 (balanced-token)
95 balanced-token-seq → balanced-token • $default reduce using rule 95 (balanced-token-seq)
91 balanced-token → • OPEN_PAREN balanced-token-seq-opt CLOSE_PAREN 92 | • OPEN_SQUARE balanced-token-seq-opt CLOSE_SQUARE 93 | • OPEN_BRACE balanced-token-seq-opt CLOSE_BRACE 94 | • BALANCED_TOKEN 96 balanced-token-seq → balanced-token-seq • balanced-token 98 balanced-token-seq-opt → balanced-token-seq • [CLOSE_PAREN, CLOSE_SQUARE, CLOSE_BRACE] OPEN_PAREN shift, and go to state 1125 OPEN_SQUARE shift, and go to state 1126 OPEN_BRACE shift, and go to state 1127 BALANCED_TOKEN shift, and go to state 1128 $default reduce using rule 98 (balanced-token-seq-opt) balanced-token go to state 1202
68 attribute-argument-clause → OPEN_PAREN balanced-token-seq-opt • CLOSE_PAREN CLOSE_PAREN shift, and go to state 1203
343 identifier-list → identifier-list COMMA IDENTIFIER • $default reduce using rule 343 (identifier-list)
641 simple-declaration → attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE initializer • SEMICOLON SEMICOLON shift, and go to state 1204
326 function-body → EQ DELETE SEMICOLON • $default reduce using rule 326 (function-body)
325 function-body → EQ DEFAULT SEMICOLON • $default reduce using rule 325 (function-body)
402 mem-initializer-list → mem-initializer ELLIPSIS-opt • $default reduce using rule 402 (mem-initializer-list)
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 90 await-expression → • CO_AWAIT cast-expression 120 braced-init-list → • OPEN_BRACE initializer-list COMMA-opt CLOSE_BRACE 121 | • OPEN_BRACE designated-initializer-list COMMA-opt CLOSE_BRACE 122 | • OPEN_BRACE CLOSE_BRACE 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 279 expression-list → • initializer-list 280 expression-list-opt → • %empty [CLOSE_PAREN] 281 | • expression-list 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 361 initializer-clause → • assignment-expression 362 | • braced-init-list 363 initializer-list → • initializer-clause ELLIPSIS-opt 364 | • initializer-list COMMA initializer-clause ELLIPSIS-opt 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 398 mem-initializer → mem-initializer-id OPEN_PAREN • expression-list-opt CLOSE_PAREN 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPEN_BRACE shift, and go to state 378 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] CLOSE_PAREN reduce using rule 280 (expression-list-opt) DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 640 await-expression go to state 268 braced-init-list go to state 641 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression-list go to state 808 expression-list-opt go to state 1205 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 initializer-clause go to state 644 initializer-list go to state 645 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
399 mem-initializer → mem-initializer-id braced-init-list • $default reduce using rule 399 (mem-initializer)
137 class-name → • IDENTIFIER 138 | • simple-template-id 139 class-or-decltype → • nested-name-specifier-opt type-name 140 | • nested-name-specifier TEMPLATE simple-template-id 141 | • decltype-specifier 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 398 mem-initializer → • mem-initializer-id OPEN_PAREN expression-list-opt CLOSE_PAREN 399 | • mem-initializer-id braced-init-list 400 mem-initializer-id → • class-or-decltype 401 | • IDENTIFIER 403 mem-initializer-list → mem-initializer-list COMMA • mem-initializer ELLIPSIS-opt 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id IDENTIFIER shift, and go to state 1008 SCOPE shift, and go to state 6 DECLTYPE shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] class-name go to state 55 class-or-decltype go to state 1009 decltype-specifier go to state 872 enum-name go to state 71 mem-initializer go to state 1206 mem-initializer-id go to state 1011 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 873 nested-name-specifier-opt go to state 874 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
331 function-try-block → TRY ctor-initializer-opt compound-statement • handler-seq 335 handler → • CATCH OPEN_PAREN exception-declaration CLOSE_PAREN compound-statement 336 handler-seq → • handler handler-seq-opt CATCH shift, and go to state 1207 handler go to state 1208 handler-seq go to state 1209
478 noexcept-specifier → • NOEXCEPT OPEN_PAREN constant-expression CLOSE_PAREN 479 | • NOEXCEPT 480 noexcept-specifier-opt → • %empty [COMMA, ELLIPSIS, EQ, SEMICOLON, ALIGNAS, OPEN_PAREN, CLOSE_PAREN, OPEN_SQUARE, COLON, OPEN_BRACE, FINAL, DEREF, GREATER, TRY, REQUIRES, OVERRIDE] 481 | • noexcept-specifier 553 parameters-and-qualifiers → OPEN_PAREN parameter-declaration-clause CLOSE_PAREN cv-qualifier-seq-opt ref-qualifier-opt • noexcept-specifier-opt attribute-specifier-seq-opt NOEXCEPT shift, and go to state 789 $default reduce using rule 480 (noexcept-specifier-opt) noexcept-specifier go to state 790 noexcept-specifier-opt go to state 1210
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 158 constant-expression → • conditional-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 418 member-declarator → IDENTIFIER-opt attribute-specifier-seq-opt COLON • constant-expression brace-or-equal-initializer-opt 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 307 constant-expression go to state 1211 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 309 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
325 function-body → EQ • DEFAULT SEMICOLON 326 | EQ • DELETE SEMICOLON 596 pure-specifier → EQ • '0' DELETE shift, and go to state 1006 DEFAULT shift, and go to state 1007 '0' shift, and go to state 1212
598 pure-specifier-opt → pure-specifier • $default reduce using rule 598 (pure-specifier-opt)
415 member-declarator → declarator virt-specifier-seq-opt pure-specifier-opt • $default reduce using rule 415 (member-declarator)
116 brace-or-equal-initializer → • EQ initializer-clause 117 | • braced-init-list 118 brace-or-equal-initializer-opt → • %empty [COMMA, SEMICOLON] 119 | • brace-or-equal-initializer 120 braced-init-list → • OPEN_BRACE initializer-list COMMA-opt CLOSE_BRACE 121 | • OPEN_BRACE designated-initializer-list COMMA-opt CLOSE_BRACE 122 | • OPEN_BRACE CLOSE_BRACE 415 member-declarator → declarator • virt-specifier-seq-opt pure-specifier-opt 416 | declarator • requires-clause 417 | declarator • brace-or-equal-initializer-opt 620 requires-clause → • REQUIRES constraint-logical-or-expression 768 virt-specifier → • OVERRIDE 769 | • FINAL 770 virt-specifier-seq → • virt-specifier 771 | • virt-specifier-seq virt-specifier 772 virt-specifier-seq-opt → • %empty [COMMA, EQ, SEMICOLON] 773 | • virt-specifier-seq EQ shift, and go to state 376 OPEN_BRACE shift, and go to state 378 FINAL shift, and go to state 610 REQUIRES shift, and go to state 379 OVERRIDE shift, and go to state 611 COMMA reduce using rule 118 (brace-or-equal-initializer-opt) COMMA [reduce using rule 772 (virt-specifier-seq-opt)] EQ [reduce using rule 772 (virt-specifier-seq-opt)] SEMICOLON reduce using rule 118 (brace-or-equal-initializer-opt) SEMICOLON [reduce using rule 772 (virt-specifier-seq-opt)] $default reduce using rule 118 (brace-or-equal-initializer-opt) brace-or-equal-initializer go to state 1020 brace-or-equal-initializer-opt go to state 1021 braced-init-list go to state 381 requires-clause go to state 1213 virt-specifier go to state 613 virt-specifier-seq go to state 614 virt-specifier-seq-opt go to state 1214
420 member-declarator-list → member-declarator-list COMMA member-declarator • $default reduce using rule 420 (member-declarator-list)
103 base-specifier → attribute-specifier-seq-opt VIRTUAL access-specifier-opt class-or-decltype • $default reduce using rule 103 (base-specifier)
104 base-specifier → attribute-specifier-seq-opt access-specifier VIRTUAL-opt class-or-decltype • $default reduce using rule 104 (base-specifier)
140 class-or-decltype → nested-name-specifier TEMPLATE simple-template-id • $default reduce using rule 140 (class-or-decltype)
106 base-specifier-list → base-specifier-list COMMA base-specifier ELLIPSIS-opt • $default reduce using rule 106 (base-specifier-list)
364 initializer-list → initializer-list COMMA initializer-clause ELLIPSIS-opt • $default reduce using rule 364 (initializer-list)
215 deduction-guide → explicit-specifier-opt template-name OPEN_PAREN parameter-declaration-clause CLOSE_PAREN DEREF simple-template-id • SEMICOLON SEMICOLON shift, and go to state 1215
427 module-declaration → EXPORT-opt MODULE module-name module-partition-opt attribute-specifier-seq-opt SEMICOLON • $default reduce using rule 427 (module-declaration)
9 EXTERN-opt → • %empty [TEMPLATE] 10 | • EXTERN 13 INLINE-opt → • %empty [NAMESPACE] 14 | • INLINE 44 alias-declaration → • USING IDENTIFIER attribute-specifier-seq-opt EQ defining-type-id SEMICOLON 49 asm-declaration → • attribute-specifier-seq-opt ASM OPEN_PAREN string-literal CLOSE_PAREN SEMICOLON 71 attribute-declaration → • attribute-specifier-seq SEMICOLON 82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, ELLIPSIS, EXTERN, IDENTIFIER, INLINE, SCOPE, TYPENAME, VIRTUAL, USING, ALIGNAS, OPEN_PAREN, AND, ASM, OPEN_SQUARE, CLASS, STRUCT, UNION, AND_AND, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, MULT, COMPL, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 84 | • attribute-specifier-seq 107 block-declaration → • simple-declaration 108 | • asm-declaration 109 | • namespace-alias-definition 110 | • using-declaration 111 | • using-enum-declaration 112 | • using-directive 113 | • static_assert-declaration 114 | • alias-declaration 115 | • opaque-enum-declaration 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 193 declaration → • block-declaration 194 | • nodeclspec-function-declaration 195 | • function-definition 196 | • template-declaration 197 | • deduction-guide 198 | • explicit-instantiation 199 | • explicit-specialization 200 | • export-declaration 201 | • linkage-specification 202 | • namespace-definition 203 | • empty-declaration 204 | • attribute-declaration 205 | • module-import-declaration 206 declaration-seq → • declaration 207 | • declaration-seq declaration 208 declaration-seq-opt → • %empty [$end] 209 | • declaration-seq 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 215 deduction-guide → • explicit-specifier-opt template-name OPEN_PAREN parameter-declaration-clause CLOSE_PAREN DEREF simple-template-id SEMICOLON 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 233 empty-declaration → • SEMICOLON 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 264 explicit-instantiation → • EXTERN-opt TEMPLATE declaration 265 explicit-specialization → • TEMPLATE LESS GREATER declaration 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 268 explicit-specifier-opt → • %empty [IDENTIFIER] 269 | • explicit-specifier 270 export-declaration → • EXPORT declaration 271 | • EXPORT OPEN_BRACE declaration-seq-opt CLOSE_BRACE 272 | • EXPORT module-import-declaration 327 function-definition → • attribute-specifier-seq-opt decl-specifier-seq-opt declarator virt-specifier-seq-opt function-body 328 | • attribute-specifier-seq-opt decl-specifier-seq-opt declarator requires-clause function-body 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 390 linkage-specification → • EXTERN string-literal OPEN_BRACE declaration-seq-opt CLOSE_BRACE 391 | • EXTERN string-literal declaration 428 module-import-declaration → • IMPORT module-name attribute-specifier-seq-opt SEMICOLON 429 | • IMPORT module-partition attribute-specifier-seq-opt SEMICOLON 430 | • IMPORT header-name attribute-specifier-seq-opt SEMICOLON 443 named-namespace-definition → • INLINE-opt NAMESPACE attribute-specifier-seq-opt IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE 444 namespace-alias → • IDENTIFIER 445 namespace-alias-definition → • NAMESPACE IDENTIFIER EQ qualified-namespace-specifier SEMICOLON 447 namespace-definition → • named-namespace-definition 448 | • unnamed-namespace-definition 449 | • nested-namespace-definition 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 460 nested-namespace-definition → • NAMESPACE enclosing-namespace-specifier SCOPE INLINE-opt IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE 476 nodeclspec-function-declaration → • attribute-specifier-seq-opt declarator SEMICOLON 496 opaque-enum-declaration → • enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt SEMICOLON 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 583 private-module-fragment → MODULE COLON PRIVATE SEMICOLON • declaration-seq-opt 639 simple-declaration → • decl-specifier-seq init-declarator-list-opt SEMICOLON 640 | • attribute-specifier-seq decl-specifier-seq init-declarator-list SEMICOLON 641 | • attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE initializer SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 675 static_assert-declaration → • STATIC_ASSERT OPEN_PAREN constant-expression CLOSE_PAREN SEMICOLON 676 | • STATIC_ASSERT OPEN_PAREN constant-expression COMMA string-literal CLOSE_PAREN SEMICOLON 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 689 template-declaration → • template-head declaration 690 | • template-head concept-definition 691 template-head → • TEMPLATE LESS template-parameter-list GREATER requires-clause-opt 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 753 unnamed-namespace-definition → • INLINE-opt NAMESPACE attribute-specifier-seq-opt OPEN_BRACE namespace-body CLOSE_BRACE 762 using-declaration → • USING using-declarator-list SEMICOLON 766 using-directive → • attribute-specifier-seq-opt USING NAMESPACE nested-name-specifier-opt namespace-name SEMICOLON 767 using-enum-declaration → • USING elaborated-enum-specifier SEMICOLON CONSTEXPR shift, and go to state 1 EXPORT shift, and go to state 2 EXTERN shift, and go to state 3 IDENTIFIER shift, and go to state 4 INLINE shift, and go to state 5 SCOPE shift, and go to state 6 TEMPLATE shift, and go to state 7 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 USING shift, and go to state 10 SEMICOLON shift, and go to state 11 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 IMPORT shift, and go to state 25 NAMESPACE shift, and go to state 26 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC_ASSERT shift, and go to state 41 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 $end reduce using rule 208 (declaration-seq-opt) CONSTEXPR [reduce using rule 83 (attribute-specifier-seq-opt)] EXTERN [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 268 (explicit-specifier-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] INLINE [reduce using rule 83 (attribute-specifier-seq-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] TEMPLATE [reduce using rule 9 (EXTERN-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] VIRTUAL [reduce using rule 83 (attribute-specifier-seq-opt)] USING [reduce using rule 83 (attribute-specifier-seq-opt)] CLASS [reduce using rule 83 (attribute-specifier-seq-opt)] STRUCT [reduce using rule 83 (attribute-specifier-seq-opt)] UNION [reduce using rule 83 (attribute-specifier-seq-opt)] CONST [reduce using rule 83 (attribute-specifier-seq-opt)] VOLATILE [reduce using rule 83 (attribute-specifier-seq-opt)] FRIEND [reduce using rule 83 (attribute-specifier-seq-opt)] TYPEDEF [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTEVAL [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTINIT [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] ENUM [reduce using rule 83 (attribute-specifier-seq-opt)] EXPLICIT [reduce using rule 83 (attribute-specifier-seq-opt)] NAMESPACE [reduce using rule 13 (INLINE-opt)] AUTO reduce using rule 83 (attribute-specifier-seq-opt) AUTO [reduce using rule 709 (type-constraint-opt)] CHAR [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR8_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR16_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR32_T [reduce using rule 83 (attribute-specifier-seq-opt)] WCHAR_T [reduce using rule 83 (attribute-specifier-seq-opt)] BOOL [reduce using rule 83 (attribute-specifier-seq-opt)] SHORT [reduce using rule 83 (attribute-specifier-seq-opt)] INT [reduce using rule 83 (attribute-specifier-seq-opt)] LONG [reduce using rule 83 (attribute-specifier-seq-opt)] SIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] UNSIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] FLOAT [reduce using rule 83 (attribute-specifier-seq-opt)] DOUBLE [reduce using rule 83 (attribute-specifier-seq-opt)] VOID [reduce using rule 83 (attribute-specifier-seq-opt)] STATIC [reduce using rule 83 (attribute-specifier-seq-opt)] THREAD_LOCAL [reduce using rule 83 (attribute-specifier-seq-opt)] MUTABLE [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) EXTERN-opt go to state 45 INLINE-opt go to state 46 alias-declaration go to state 47 asm-declaration go to state 48 attribute-declaration go to state 49 attribute-specifier-seq go to state 50 attribute-specifier-seq-opt go to state 51 block-declaration go to state 52 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration go to state 60 declaration-seq go to state 61 declaration-seq-opt go to state 1216 decltype-specifier go to state 63 deduction-guide go to state 64 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 empty-declaration go to state 68 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-instantiation go to state 73 explicit-specialization go to state 74 explicit-specifier go to state 75 explicit-specifier-opt go to state 76 export-declaration go to state 77 function-definition go to state 78 function-specifier go to state 79 linkage-specification go to state 82 module-import-declaration go to state 83 named-namespace-definition go to state 84 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-definition go to state 87 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 nested-namespace-definition go to state 91 nodeclspec-function-declaration go to state 92 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-declaration go to state 100 template-head go to state 101 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 unnamed-namespace-definition go to state 110 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty 84 | • attribute-specifier-seq 483 noptr-abstract-declarator → noptr-abstract-declarator-opt OPEN_SQUARE constant-expression-opt CLOSE_SQUARE • attribute-specifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 1217
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty 84 | • attribute-specifier-seq 488 noptr-abstract-pack-declarator → noptr-abstract-pack-declarator OPEN_SQUARE constant-expression-opt CLOSE_SQUARE • attribute-specifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 1218
546 parameter-declaration → attribute-specifier-seq-opt THIS-opt decl-specifier-seq abstract-declarator-opt EQ initializer-clause • $default reduce using rule 546 (parameter-declaration)
544 parameter-declaration → attribute-specifier-seq-opt THIS-opt decl-specifier-seq declarator EQ initializer-clause • $default reduce using rule 544 (parameter-declaration)
287 fold-expression → OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression • CLOSE_PAREN CLOSE_PAREN shift, and go to state 1219
723 type-requirement → TYPENAME nested-name-specifier-opt type-name • SEMICOLON SEMICOLON shift, and go to state 1220
15 NOEXCEPT-opt → • %empty [SEMICOLON, DEREF] 16 | • NOEXCEPT 148 compound-requirement → OPEN_BRACE expression CLOSE_BRACE • NOEXCEPT-opt return-type-requirement-opt SEMICOLON NOEXCEPT shift, and go to state 1221 $default reduce using rule 15 (NOEXCEPT-opt) NOEXCEPT-opt go to state 1222
461 nested-requirement → REQUIRES constraint-expression SEMICOLON • $default reduce using rule 461 (nested-requirement)
278 expression → expression • COMMA assignment-expression 570 postfix-expression → DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression • CLOSE_PAREN COMMA shift, and go to state 532 CLOSE_PAREN shift, and go to state 1223
278 expression → expression • COMMA assignment-expression 571 postfix-expression → STATIC_CAST LESS type-id GREATER OPEN_PAREN expression • CLOSE_PAREN COMMA shift, and go to state 532 CLOSE_PAREN shift, and go to state 1224
278 expression → expression • COMMA assignment-expression 572 postfix-expression → REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression • CLOSE_PAREN COMMA shift, and go to state 532 CLOSE_PAREN shift, and go to state 1225
278 expression → expression • COMMA assignment-expression 573 postfix-expression → CONST_CAST LESS type-id GREATER OPEN_PAREN expression • CLOSE_PAREN COMMA shift, and go to state 532 CLOSE_PAREN shift, and go to state 1226
120 braced-init-list → • OPEN_BRACE initializer-list COMMA-opt CLOSE_BRACE 121 | • OPEN_BRACE designated-initializer-list COMMA-opt CLOSE_BRACE 122 | • OPEN_BRACE CLOSE_BRACE 467 new-expression → SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN • new-initializer-opt 468 new-initializer → • OPEN_PAREN expression-list-opt CLOSE_PAREN 469 | • braced-init-list 470 new-initializer-opt → • %empty [COMMA, ELLIPSIS, PLUS, MINUS, EQ, SEMICOLON, CLOSE_PAREN, AND, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, SPACESHIP, QUERY, AND_AND, OR_OR, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR] 471 | • new-initializer OPEN_PAREN shift, and go to state 1075 OPEN_BRACE shift, and go to state 378 OPEN_BRACE [reduce using rule 470 (new-initializer-opt)] $default reduce using rule 470 (new-initializer-opt) braced-init-list go to state 1076 new-initializer go to state 1077 new-initializer-opt go to state 1227
468 new-initializer → OPEN_PAREN expression-list-opt • CLOSE_PAREN CLOSE_PAREN shift, and go to state 1228
494 noptr-new-declarator → OPEN_SQUARE expression-opt • CLOSE_SQUARE attribute-specifier-seq-opt CLOSE_SQUARE shift, and go to state 1229
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 158 constant-expression → • conditional-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 495 noptr-new-declarator → noptr-new-declarator OPEN_SQUARE • constant-expression CLOSE_SQUARE attribute-specifier-seq-opt 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 307 constant-expression go to state 1230 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 309 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304
462 new-declarator → ptr-operator new-declarator-opt • $default reduce using rule 462 (new-declarator)
385 lambda-declarator → OPEN_PAREN parameter-declaration-clause CLOSE_PAREN lambda-specifiers requires-clause-opt • $default reduce using rule 385 (lambda-declarator)
149 compound-statement → • OPEN_BRACE statement-seq-opt CLOSE_BRACE 387 lambda-expression → lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator • compound-statement OPEN_BRACE shift, and go to state 792 compound-statement go to state 1231
478 noexcept-specifier → NOEXCEPT OPEN_PAREN constant-expression CLOSE_PAREN • $default reduce using rule 478 (noexcept-specifier)
44 alias-declaration → • USING IDENTIFIER attribute-specifier-seq-opt EQ defining-type-id SEMICOLON 49 asm-declaration → • attribute-specifier-seq-opt ASM OPEN_PAREN string-literal CLOSE_PAREN SEMICOLON 82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, NOT, SCOPE, THIS, TYPENAME, VIRTUAL, PLUS, MINUS, USING, SEMICOLON, ALIGNAS, OPEN_PAREN, AND, ASM, OPEN_SQUARE, CO_AWAIT, OPEN_BRACE, CLASS, STRUCT, UNION, OPERATOR, CO_RETURN, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DELETE, ENUM, EXPLICIT, MULT, DEFAULT, TRY, WHILE, DO, FOR, BREAK, CONTINUE, RETURN, GOTO, CASE, REQUIRES, NEW, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, DYNAMIC_CAST, STATIC_CAST, REINTERPRET_CAST, CONST_CAST, TYPEID, LITERAL, IF, SWITCH, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE, THROW, SIZEOF, ALIGNOF, CO_YIELD] 84 | • attribute-specifier-seq 107 block-declaration → • simple-declaration 108 | • asm-declaration 109 | • namespace-alias-definition 110 | • using-declaration 111 | • using-enum-declaration 112 | • using-directive 113 | • static_assert-declaration 114 | • alias-declaration 115 | • opaque-enum-declaration 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 210 declaration-statement → • block-declaration 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 376 labeled-statement → • attribute-specifier-seq-opt IDENTIFIER COLON statement 376 | attribute-specifier-seq-opt IDENTIFIER COLON • statement 377 | • attribute-specifier-seq-opt CASE constant-expression COLON statement 378 | • attribute-specifier-seq-opt DEFAULT COLON statement 444 namespace-alias → • IDENTIFIER 445 namespace-alias-definition → • NAMESPACE IDENTIFIER EQ qualified-namespace-specifier SEMICOLON 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 496 opaque-enum-declaration → • enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt SEMICOLON 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 639 simple-declaration → • decl-specifier-seq init-declarator-list-opt SEMICOLON 640 | • attribute-specifier-seq decl-specifier-seq init-declarator-list SEMICOLON 641 | • attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE initializer SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 663 statement → • labeled-statement 664 | • attribute-specifier-seq-opt expression-statement 665 | • attribute-specifier-seq-opt compound-statement 666 | • attribute-specifier-seq-opt selection-statement 667 | • attribute-specifier-seq-opt iteration-statement 668 | • attribute-specifier-seq-opt jump-statement 669 | • declaration-statement 670 | • attribute-specifier-seq-opt try-block 675 static_assert-declaration → • STATIC_ASSERT OPEN_PAREN constant-expression CLOSE_PAREN SEMICOLON 676 | • STATIC_ASSERT OPEN_PAREN constant-expression COMMA string-literal CLOSE_PAREN SEMICOLON 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 762 using-declaration → • USING using-declarator-list SEMICOLON 766 using-directive → • attribute-specifier-seq-opt USING NAMESPACE nested-name-specifier-opt namespace-name SEMICOLON 767 using-enum-declaration → • USING elaborated-enum-specifier SEMICOLON CONSTEXPR shift, and go to state 1 EXTERN shift, and go to state 149 IDENTIFIER shift, and go to state 4 INLINE shift, and go to state 150 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 USING shift, and go to state 10 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 NAMESPACE shift, and go to state 970 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC_ASSERT shift, and go to state 41 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 CONSTEXPR [reduce using rule 83 (attribute-specifier-seq-opt)] EXTERN [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] INLINE [reduce using rule 83 (attribute-specifier-seq-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] VIRTUAL [reduce using rule 83 (attribute-specifier-seq-opt)] USING [reduce using rule 83 (attribute-specifier-seq-opt)] CLASS [reduce using rule 83 (attribute-specifier-seq-opt)] STRUCT [reduce using rule 83 (attribute-specifier-seq-opt)] UNION [reduce using rule 83 (attribute-specifier-seq-opt)] CONST [reduce using rule 83 (attribute-specifier-seq-opt)] VOLATILE [reduce using rule 83 (attribute-specifier-seq-opt)] FRIEND [reduce using rule 83 (attribute-specifier-seq-opt)] TYPEDEF [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTEVAL [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTINIT [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] ENUM [reduce using rule 83 (attribute-specifier-seq-opt)] EXPLICIT [reduce using rule 83 (attribute-specifier-seq-opt)] AUTO reduce using rule 83 (attribute-specifier-seq-opt) AUTO [reduce using rule 709 (type-constraint-opt)] CHAR [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR8_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR16_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR32_T [reduce using rule 83 (attribute-specifier-seq-opt)] WCHAR_T [reduce using rule 83 (attribute-specifier-seq-opt)] BOOL [reduce using rule 83 (attribute-specifier-seq-opt)] SHORT [reduce using rule 83 (attribute-specifier-seq-opt)] INT [reduce using rule 83 (attribute-specifier-seq-opt)] LONG [reduce using rule 83 (attribute-specifier-seq-opt)] SIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] UNSIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] FLOAT [reduce using rule 83 (attribute-specifier-seq-opt)] DOUBLE [reduce using rule 83 (attribute-specifier-seq-opt)] VOID [reduce using rule 83 (attribute-specifier-seq-opt)] STATIC [reduce using rule 83 (attribute-specifier-seq-opt)] THREAD_LOCAL [reduce using rule 83 (attribute-specifier-seq-opt)] MUTABLE [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 971 attribute-specifier-seq-opt go to state 972 block-declaration go to state 973 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 974 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 labeled-statement go to state 975 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1232 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113
274 expr-or-braced-init-list → braced-init-list • $default reduce using rule 274 (expr-or-braced-init-list)
276 expr-or-braced-init-list-opt → expr-or-braced-init-list • $default reduce using rule 276 (expr-or-braced-init-list-opt)
171 coroutine-return-statement → CO_RETURN expr-or-braced-init-list-opt • SEMICOLON SEMICOLON shift, and go to state 1233
273 expr-or-braced-init-list → expression • [SEMICOLON, CLOSE_PAREN] 278 expression → expression • COMMA assignment-expression COMMA shift, and go to state 532 $default reduce using rule 273 (expr-or-braced-init-list)
44 alias-declaration → • USING IDENTIFIER attribute-specifier-seq-opt EQ defining-type-id SEMICOLON 49 asm-declaration → • attribute-specifier-seq-opt ASM OPEN_PAREN string-literal CLOSE_PAREN SEMICOLON 82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, NOT, SCOPE, THIS, TYPENAME, VIRTUAL, PLUS, MINUS, USING, SEMICOLON, ALIGNAS, OPEN_PAREN, AND, ASM, OPEN_SQUARE, CO_AWAIT, OPEN_BRACE, CLASS, STRUCT, UNION, OPERATOR, CO_RETURN, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DELETE, ENUM, EXPLICIT, MULT, DEFAULT, TRY, WHILE, DO, FOR, BREAK, CONTINUE, RETURN, GOTO, CASE, REQUIRES, NEW, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, DYNAMIC_CAST, STATIC_CAST, REINTERPRET_CAST, CONST_CAST, TYPEID, LITERAL, IF, SWITCH, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE, THROW, SIZEOF, ALIGNOF, CO_YIELD] 84 | • attribute-specifier-seq 107 block-declaration → • simple-declaration 108 | • asm-declaration 109 | • namespace-alias-definition 110 | • using-declaration 111 | • using-enum-declaration 112 | • using-directive 113 | • static_assert-declaration 114 | • alias-declaration 115 | • opaque-enum-declaration 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 210 declaration-statement → • block-declaration 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 376 labeled-statement → • attribute-specifier-seq-opt IDENTIFIER COLON statement 377 | • attribute-specifier-seq-opt CASE constant-expression COLON statement 378 | • attribute-specifier-seq-opt DEFAULT COLON statement 378 | attribute-specifier-seq-opt DEFAULT COLON • statement 444 namespace-alias → • IDENTIFIER 445 namespace-alias-definition → • NAMESPACE IDENTIFIER EQ qualified-namespace-specifier SEMICOLON 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 496 opaque-enum-declaration → • enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt SEMICOLON 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 639 simple-declaration → • decl-specifier-seq init-declarator-list-opt SEMICOLON 640 | • attribute-specifier-seq decl-specifier-seq init-declarator-list SEMICOLON 641 | • attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE initializer SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 663 statement → • labeled-statement 664 | • attribute-specifier-seq-opt expression-statement 665 | • attribute-specifier-seq-opt compound-statement 666 | • attribute-specifier-seq-opt selection-statement 667 | • attribute-specifier-seq-opt iteration-statement 668 | • attribute-specifier-seq-opt jump-statement 669 | • declaration-statement 670 | • attribute-specifier-seq-opt try-block 675 static_assert-declaration → • STATIC_ASSERT OPEN_PAREN constant-expression CLOSE_PAREN SEMICOLON 676 | • STATIC_ASSERT OPEN_PAREN constant-expression COMMA string-literal CLOSE_PAREN SEMICOLON 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 762 using-declaration → • USING using-declarator-list SEMICOLON 766 using-directive → • attribute-specifier-seq-opt USING NAMESPACE nested-name-specifier-opt namespace-name SEMICOLON 767 using-enum-declaration → • USING elaborated-enum-specifier SEMICOLON CONSTEXPR shift, and go to state 1 EXTERN shift, and go to state 149 IDENTIFIER shift, and go to state 4 INLINE shift, and go to state 150 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 USING shift, and go to state 10 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 NAMESPACE shift, and go to state 970 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC_ASSERT shift, and go to state 41 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 CONSTEXPR [reduce using rule 83 (attribute-specifier-seq-opt)] EXTERN [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] INLINE [reduce using rule 83 (attribute-specifier-seq-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] VIRTUAL [reduce using rule 83 (attribute-specifier-seq-opt)] USING [reduce using rule 83 (attribute-specifier-seq-opt)] CLASS [reduce using rule 83 (attribute-specifier-seq-opt)] STRUCT [reduce using rule 83 (attribute-specifier-seq-opt)] UNION [reduce using rule 83 (attribute-specifier-seq-opt)] CONST [reduce using rule 83 (attribute-specifier-seq-opt)] VOLATILE [reduce using rule 83 (attribute-specifier-seq-opt)] FRIEND [reduce using rule 83 (attribute-specifier-seq-opt)] TYPEDEF [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTEVAL [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTINIT [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] ENUM [reduce using rule 83 (attribute-specifier-seq-opt)] EXPLICIT [reduce using rule 83 (attribute-specifier-seq-opt)] AUTO reduce using rule 83 (attribute-specifier-seq-opt) AUTO [reduce using rule 709 (type-constraint-opt)] CHAR [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR8_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR16_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR32_T [reduce using rule 83 (attribute-specifier-seq-opt)] WCHAR_T [reduce using rule 83 (attribute-specifier-seq-opt)] BOOL [reduce using rule 83 (attribute-specifier-seq-opt)] SHORT [reduce using rule 83 (attribute-specifier-seq-opt)] INT [reduce using rule 83 (attribute-specifier-seq-opt)] LONG [reduce using rule 83 (attribute-specifier-seq-opt)] SIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] UNSIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] FLOAT [reduce using rule 83 (attribute-specifier-seq-opt)] DOUBLE [reduce using rule 83 (attribute-specifier-seq-opt)] VOID [reduce using rule 83 (attribute-specifier-seq-opt)] STATIC [reduce using rule 83 (attribute-specifier-seq-opt)] THREAD_LOCAL [reduce using rule 83 (attribute-specifier-seq-opt)] MUTABLE [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 971 attribute-specifier-seq-opt go to state 972 block-declaration go to state 973 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 974 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 labeled-statement go to state 975 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1234 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113
335 handler → • CATCH OPEN_PAREN exception-declaration CLOSE_PAREN compound-statement 336 handler-seq → • handler handler-seq-opt 706 try-block → TRY compound-statement • handler-seq CATCH shift, and go to state 1207 handler go to state 1208 handler-seq go to state 1235
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, EXTERN, IDENTIFIER, INLINE, SCOPE, TYPENAME, VIRTUAL, ALIGNAS, OPEN_SQUARE, CLASS, STRUCT, UNION, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 84 | • attribute-specifier-seq 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 152 condition → • expression 153 | • attribute-specifier-seq-opt decl-specifier-seq declarator brace-or-equal-initializer 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 277 expression → • assignment-expression 278 | • expression COMMA assignment-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 367 iteration-statement → WHILE OPEN_PAREN • condition CLOSE_PAREN statement 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] OPEN_SQUARE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] DELETE reduce using rule 19 (SCOPE-opt) NEW reduce using rule 19 (SCOPE-opt) AUTO reduce using rule 83 (attribute-specifier-seq-opt) AUTO [reduce using rule 709 (type-constraint-opt)] CHAR [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR8_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR16_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR32_T [reduce using rule 83 (attribute-specifier-seq-opt)] WCHAR_T [reduce using rule 83 (attribute-specifier-seq-opt)] BOOL [reduce using rule 83 (attribute-specifier-seq-opt)] SHORT [reduce using rule 83 (attribute-specifier-seq-opt)] INT [reduce using rule 83 (attribute-specifier-seq-opt)] LONG [reduce using rule 83 (attribute-specifier-seq-opt)] SIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] UNSIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] FLOAT [reduce using rule 83 (attribute-specifier-seq-opt)] DOUBLE [reduce using rule 83 (attribute-specifier-seq-opt)] VOID [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 1236 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 condition go to state 1237 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 1238 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
368 iteration-statement → DO statement • WHILE OPEN_PAREN expression CLOSE_PAREN SEMICOLON WHILE shift, and go to state 1239
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 44 alias-declaration → • USING IDENTIFIER attribute-specifier-seq-opt EQ defining-type-id SEMICOLON 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, EXTERN, IDENTIFIER, INLINE, SCOPE, TYPENAME, VIRTUAL, ALIGNAS, OPEN_SQUARE, CLASS, STRUCT, UNION, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 84 | • attribute-specifier-seq 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 277 expression → • assignment-expression 278 | • expression COMMA assignment-expression 282 expression-opt → • %empty [SEMICOLON] 283 | • expression 284 expression-statement → • expression-opt SEMICOLON 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 354 init-statement → • expression-statement 355 | • simple-declaration 356 | • alias-declaration 357 init-statement-opt → • %empty [CONSTEXPR, EXTERN, IDENTIFIER, INLINE, SCOPE, TYPENAME, VIRTUAL, ALIGNAS, OPEN_SQUARE, CLASS, STRUCT, UNION, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 358 | • init-statement 369 iteration-statement → FOR OPEN_PAREN • init-statement condition-opt SEMICOLON expression-opt CLOSE_PAREN statement 370 | FOR OPEN_PAREN • init-statement-opt for-range-declaration COLON for-range-initializer CLOSE_PAREN statement 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 639 simple-declaration → • decl-specifier-seq init-declarator-list-opt SEMICOLON 640 | • attribute-specifier-seq decl-specifier-seq init-declarator-list SEMICOLON 641 | • attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE initializer SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list CONSTEXPR shift, and go to state 1 EXTERN shift, and go to state 149 IDENTIFIER shift, and go to state 237 INLINE shift, and go to state 150 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 PLUS shift, and go to state 242 MINUS shift, and go to state 243 USING shift, and go to state 1240 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 OPERATOR shift, and go to state 248 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 CONSTEXPR [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTEXPR [reduce using rule 357 (init-statement-opt)] EXTERN [reduce using rule 83 (attribute-specifier-seq-opt)] EXTERN [reduce using rule 357 (init-statement-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 357 (init-statement-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] INLINE [reduce using rule 83 (attribute-specifier-seq-opt)] INLINE [reduce using rule 357 (init-statement-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] SCOPE [reduce using rule 357 (init-statement-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] TYPENAME [reduce using rule 357 (init-statement-opt)] VIRTUAL [reduce using rule 83 (attribute-specifier-seq-opt)] VIRTUAL [reduce using rule 357 (init-statement-opt)] SEMICOLON reduce using rule 282 (expression-opt) ALIGNAS reduce using rule 83 (attribute-specifier-seq-opt) ALIGNAS [reduce using rule 357 (init-statement-opt)] OPEN_SQUARE [reduce using rule 83 (attribute-specifier-seq-opt)] OPEN_SQUARE [reduce using rule 357 (init-statement-opt)] CLASS [reduce using rule 83 (attribute-specifier-seq-opt)] CLASS [reduce using rule 357 (init-statement-opt)] STRUCT [reduce using rule 83 (attribute-specifier-seq-opt)] STRUCT [reduce using rule 357 (init-statement-opt)] UNION [reduce using rule 83 (attribute-specifier-seq-opt)] UNION [reduce using rule 357 (init-statement-opt)] CONST [reduce using rule 83 (attribute-specifier-seq-opt)] CONST [reduce using rule 357 (init-statement-opt)] VOLATILE [reduce using rule 83 (attribute-specifier-seq-opt)] VOLATILE [reduce using rule 357 (init-statement-opt)] FRIEND [reduce using rule 83 (attribute-specifier-seq-opt)] FRIEND [reduce using rule 357 (init-statement-opt)] TYPEDEF [reduce using rule 83 (attribute-specifier-seq-opt)] TYPEDEF [reduce using rule 357 (init-statement-opt)] CONSTEVAL [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTEVAL [reduce using rule 357 (init-statement-opt)] CONSTINIT [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTINIT [reduce using rule 357 (init-statement-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 357 (init-statement-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] ENUM [reduce using rule 83 (attribute-specifier-seq-opt)] ENUM [reduce using rule 357 (init-statement-opt)] EXPLICIT [reduce using rule 83 (attribute-specifier-seq-opt)] EXPLICIT [reduce using rule 357 (init-statement-opt)] AUTO reduce using rule 83 (attribute-specifier-seq-opt) AUTO [reduce using rule 357 (init-statement-opt)] AUTO [reduce using rule 709 (type-constraint-opt)] CHAR [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR [reduce using rule 357 (init-statement-opt)] CHAR8_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR8_T [reduce using rule 357 (init-statement-opt)] CHAR16_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR16_T [reduce using rule 357 (init-statement-opt)] CHAR32_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR32_T [reduce using rule 357 (init-statement-opt)] WCHAR_T [reduce using rule 83 (attribute-specifier-seq-opt)] WCHAR_T [reduce using rule 357 (init-statement-opt)] BOOL [reduce using rule 83 (attribute-specifier-seq-opt)] BOOL [reduce using rule 357 (init-statement-opt)] SHORT [reduce using rule 83 (attribute-specifier-seq-opt)] SHORT [reduce using rule 357 (init-statement-opt)] INT [reduce using rule 83 (attribute-specifier-seq-opt)] INT [reduce using rule 357 (init-statement-opt)] LONG [reduce using rule 83 (attribute-specifier-seq-opt)] LONG [reduce using rule 357 (init-statement-opt)] SIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] SIGNED [reduce using rule 357 (init-statement-opt)] UNSIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] UNSIGNED [reduce using rule 357 (init-statement-opt)] FLOAT [reduce using rule 83 (attribute-specifier-seq-opt)] FLOAT [reduce using rule 357 (init-statement-opt)] DOUBLE [reduce using rule 83 (attribute-specifier-seq-opt)] DOUBLE [reduce using rule 357 (init-statement-opt)] VOID [reduce using rule 83 (attribute-specifier-seq-opt)] VOID [reduce using rule 357 (init-statement-opt)] STATIC [reduce using rule 83 (attribute-specifier-seq-opt)] STATIC [reduce using rule 357 (init-statement-opt)] THREAD_LOCAL [reduce using rule 83 (attribute-specifier-seq-opt)] THREAD_LOCAL [reduce using rule 357 (init-statement-opt)] MUTABLE [reduce using rule 83 (attribute-specifier-seq-opt)] MUTABLE [reduce using rule 357 (init-statement-opt)] $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 alias-declaration go to state 1241 and-expression go to state 266 assignment-expression go to state 267 attribute-specifier-seq go to state 971 attribute-specifier-seq-opt go to state 1242 await-expression go to state 268 cast-expression go to state 269 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 decltype-specifier go to state 63 defining-type-specifier go to state 65 delete-expression go to state 273 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 153 enum-name go to state 71 enum-specifier go to state 72 equality-expression go to state 274 exclusive-or-expression go to state 275 explicit-specifier go to state 154 expression go to state 1108 expression-opt go to state 1109 expression-statement go to state 1243 fold-expression go to state 277 function-specifier go to state 79 id-expression go to state 278 inclusive-or-expression go to state 279 init-statement go to state 1244 init-statement-opt go to state 1245 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-declaration go to state 1246 simple-template-id go to state 297 simple-type-specifier go to state 407 storage-class-specifier go to state 99 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 414 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
371 jump-statement → BREAK SEMICOLON • $default reduce using rule 371 (jump-statement)
372 jump-statement → CONTINUE SEMICOLON • $default reduce using rule 372 (jump-statement)
373 jump-statement → RETURN expr-or-braced-init-list-opt • SEMICOLON SEMICOLON shift, and go to state 1247
375 jump-statement → GOTO IDENTIFIER • SEMICOLON SEMICOLON shift, and go to state 1248
377 labeled-statement → attribute-specifier-seq-opt CASE constant-expression • COLON statement COLON shift, and go to state 1249
4 CONSTEXPR-opt → CONSTEXPR • $default reduce using rule 4 (CONSTEXPR-opt)
18 NOT-opt → NOT • $default reduce using rule 18 (NOT-opt)
627 selection-statement → IF CONSTEXPR-opt • OPEN_PAREN init-statement-opt condition CLOSE_PAREN statement 628 | IF CONSTEXPR-opt • OPEN_PAREN init-statement-opt condition CLOSE_PAREN statement ELSE statement OPEN_PAREN shift, and go to state 1250
629 selection-statement → IF NOT-opt • CONSTEVAL compound-statement 630 | IF NOT-opt • CONSTEVAL compound-statement ELSE statement CONSTEVAL shift, and go to state 1251
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 44 alias-declaration → • USING IDENTIFIER attribute-specifier-seq-opt EQ defining-type-id SEMICOLON 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, EXTERN, IDENTIFIER, INLINE, SCOPE, TYPENAME, VIRTUAL, ALIGNAS, OPEN_SQUARE, CLASS, STRUCT, UNION, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 84 | • attribute-specifier-seq 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 277 expression → • assignment-expression 278 | • expression COMMA assignment-expression 282 expression-opt → • %empty [SEMICOLON] 283 | • expression 284 expression-statement → • expression-opt SEMICOLON 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 354 init-statement → • expression-statement 355 | • simple-declaration 356 | • alias-declaration 357 init-statement-opt → • %empty [CONSTEXPR, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, NOT, SCOPE, THIS, TYPENAME, VIRTUAL, PLUS, MINUS, ALIGNAS, OPEN_PAREN, AND, OPEN_SQUARE, CO_AWAIT, CLASS, STRUCT, UNION, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DELETE, ENUM, EXPLICIT, MULT, REQUIRES, NEW, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, DYNAMIC_CAST, STATIC_CAST, REINTERPRET_CAST, CONST_CAST, TYPEID, LITERAL, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE, THROW, SIZEOF, ALIGNOF, CO_YIELD] 358 | • init-statement 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 631 selection-statement → SWITCH OPEN_PAREN • init-statement-opt condition CLOSE_PAREN statement 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 639 simple-declaration → • decl-specifier-seq init-declarator-list-opt SEMICOLON 640 | • attribute-specifier-seq decl-specifier-seq init-declarator-list SEMICOLON 641 | • attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE initializer SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list CONSTEXPR shift, and go to state 1 EXTERN shift, and go to state 149 IDENTIFIER shift, and go to state 237 INLINE shift, and go to state 150 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 PLUS shift, and go to state 242 MINUS shift, and go to state 243 USING shift, and go to state 1240 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 OPERATOR shift, and go to state 248 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 CONSTEXPR [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTEXPR [reduce using rule 357 (init-statement-opt)] EXTERN [reduce using rule 83 (attribute-specifier-seq-opt)] EXTERN [reduce using rule 357 (init-statement-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 357 (init-statement-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] INLINE [reduce using rule 83 (attribute-specifier-seq-opt)] INLINE [reduce using rule 357 (init-statement-opt)] NOEXCEPT [reduce using rule 357 (init-statement-opt)] NOT [reduce using rule 357 (init-statement-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] SCOPE [reduce using rule 357 (init-statement-opt)] THIS [reduce using rule 357 (init-statement-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] TYPENAME [reduce using rule 357 (init-statement-opt)] VIRTUAL [reduce using rule 83 (attribute-specifier-seq-opt)] VIRTUAL [reduce using rule 357 (init-statement-opt)] PLUS [reduce using rule 357 (init-statement-opt)] MINUS [reduce using rule 357 (init-statement-opt)] SEMICOLON reduce using rule 282 (expression-opt) ALIGNAS reduce using rule 83 (attribute-specifier-seq-opt) ALIGNAS [reduce using rule 357 (init-statement-opt)] OPEN_PAREN [reduce using rule 357 (init-statement-opt)] AND [reduce using rule 357 (init-statement-opt)] OPEN_SQUARE [reduce using rule 83 (attribute-specifier-seq-opt)] OPEN_SQUARE [reduce using rule 357 (init-statement-opt)] CO_AWAIT [reduce using rule 357 (init-statement-opt)] CLASS [reduce using rule 83 (attribute-specifier-seq-opt)] CLASS [reduce using rule 357 (init-statement-opt)] STRUCT [reduce using rule 83 (attribute-specifier-seq-opt)] STRUCT [reduce using rule 357 (init-statement-opt)] UNION [reduce using rule 83 (attribute-specifier-seq-opt)] UNION [reduce using rule 357 (init-statement-opt)] OPERATOR [reduce using rule 357 (init-statement-opt)] CONST [reduce using rule 83 (attribute-specifier-seq-opt)] CONST [reduce using rule 357 (init-statement-opt)] VOLATILE [reduce using rule 83 (attribute-specifier-seq-opt)] VOLATILE [reduce using rule 357 (init-statement-opt)] FRIEND [reduce using rule 83 (attribute-specifier-seq-opt)] FRIEND [reduce using rule 357 (init-statement-opt)] TYPEDEF [reduce using rule 83 (attribute-specifier-seq-opt)] TYPEDEF [reduce using rule 357 (init-statement-opt)] CONSTEVAL [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTEVAL [reduce using rule 357 (init-statement-opt)] CONSTINIT [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTINIT [reduce using rule 357 (init-statement-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 357 (init-statement-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] DELETE reduce using rule 19 (SCOPE-opt) DELETE [reduce using rule 357 (init-statement-opt)] ENUM [reduce using rule 83 (attribute-specifier-seq-opt)] ENUM [reduce using rule 357 (init-statement-opt)] EXPLICIT [reduce using rule 83 (attribute-specifier-seq-opt)] EXPLICIT [reduce using rule 357 (init-statement-opt)] MULT [reduce using rule 357 (init-statement-opt)] REQUIRES [reduce using rule 357 (init-statement-opt)] NEW reduce using rule 19 (SCOPE-opt) NEW [reduce using rule 357 (init-statement-opt)] COMPL [reduce using rule 357 (init-statement-opt)] PLUS_PLUS [reduce using rule 357 (init-statement-opt)] MINUS_MINUS [reduce using rule 357 (init-statement-opt)] AUTO reduce using rule 83 (attribute-specifier-seq-opt) AUTO [reduce using rule 357 (init-statement-opt)] AUTO [reduce using rule 709 (type-constraint-opt)] DYNAMIC_CAST [reduce using rule 357 (init-statement-opt)] STATIC_CAST [reduce using rule 357 (init-statement-opt)] REINTERPRET_CAST [reduce using rule 357 (init-statement-opt)] CONST_CAST [reduce using rule 357 (init-statement-opt)] TYPEID [reduce using rule 357 (init-statement-opt)] LITERAL [reduce using rule 357 (init-statement-opt)] CHAR [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR [reduce using rule 357 (init-statement-opt)] CHAR8_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR8_T [reduce using rule 357 (init-statement-opt)] CHAR16_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR16_T [reduce using rule 357 (init-statement-opt)] CHAR32_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR32_T [reduce using rule 357 (init-statement-opt)] WCHAR_T [reduce using rule 83 (attribute-specifier-seq-opt)] WCHAR_T [reduce using rule 357 (init-statement-opt)] BOOL [reduce using rule 83 (attribute-specifier-seq-opt)] BOOL [reduce using rule 357 (init-statement-opt)] SHORT [reduce using rule 83 (attribute-specifier-seq-opt)] SHORT [reduce using rule 357 (init-statement-opt)] INT [reduce using rule 83 (attribute-specifier-seq-opt)] INT [reduce using rule 357 (init-statement-opt)] LONG [reduce using rule 83 (attribute-specifier-seq-opt)] LONG [reduce using rule 357 (init-statement-opt)] SIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] SIGNED [reduce using rule 357 (init-statement-opt)] UNSIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] UNSIGNED [reduce using rule 357 (init-statement-opt)] FLOAT [reduce using rule 83 (attribute-specifier-seq-opt)] FLOAT [reduce using rule 357 (init-statement-opt)] DOUBLE [reduce using rule 83 (attribute-specifier-seq-opt)] DOUBLE [reduce using rule 357 (init-statement-opt)] VOID [reduce using rule 83 (attribute-specifier-seq-opt)] VOID [reduce using rule 357 (init-statement-opt)] STATIC [reduce using rule 83 (attribute-specifier-seq-opt)] STATIC [reduce using rule 357 (init-statement-opt)] THREAD_LOCAL [reduce using rule 83 (attribute-specifier-seq-opt)] THREAD_LOCAL [reduce using rule 357 (init-statement-opt)] MUTABLE [reduce using rule 83 (attribute-specifier-seq-opt)] MUTABLE [reduce using rule 357 (init-statement-opt)] THROW [reduce using rule 357 (init-statement-opt)] SIZEOF [reduce using rule 357 (init-statement-opt)] ALIGNOF [reduce using rule 357 (init-statement-opt)] CO_YIELD [reduce using rule 357 (init-statement-opt)] $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 alias-declaration go to state 1241 and-expression go to state 266 assignment-expression go to state 267 attribute-specifier-seq go to state 971 attribute-specifier-seq-opt go to state 1242 await-expression go to state 268 cast-expression go to state 269 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 decltype-specifier go to state 63 defining-type-specifier go to state 65 delete-expression go to state 273 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 153 enum-name go to state 71 enum-specifier go to state 72 equality-expression go to state 274 exclusive-or-expression go to state 275 explicit-specifier go to state 154 expression go to state 1108 expression-opt go to state 1109 expression-statement go to state 1243 fold-expression go to state 277 function-specifier go to state 79 id-expression go to state 278 inclusive-or-expression go to state 279 init-statement go to state 1252 init-statement-opt go to state 1253 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-declaration go to state 1246 simple-template-id go to state 297 simple-type-specifier go to state 407 storage-class-specifier go to state 99 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 414 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
284 expression-statement → expression-opt SEMICOLON • $default reduce using rule 284 (expression-statement)
460 nested-namespace-definition → NAMESPACE enclosing-namespace-specifier SCOPE INLINE-opt IDENTIFIER OPEN_BRACE namespace-body CLOSE_BRACE • $default reduce using rule 460 (nested-namespace-definition)
75 attribute-list → attribute-list COMMA attribute ELLIPSIS • $default reduce using rule 75 (attribute-list)
91 balanced-token → OPEN_PAREN balanced-token-seq-opt • CLOSE_PAREN CLOSE_PAREN shift, and go to state 1254
92 balanced-token → OPEN_SQUARE balanced-token-seq-opt • CLOSE_SQUARE CLOSE_SQUARE shift, and go to state 1255
93 balanced-token → OPEN_BRACE balanced-token-seq-opt • CLOSE_BRACE CLOSE_BRACE shift, and go to state 1256
96 balanced-token-seq → balanced-token-seq balanced-token • $default reduce using rule 96 (balanced-token-seq)
68 attribute-argument-clause → OPEN_PAREN balanced-token-seq-opt CLOSE_PAREN • $default reduce using rule 68 (attribute-argument-clause)
641 simple-declaration → attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE initializer SEMICOLON • $default reduce using rule 641 (simple-declaration)
398 mem-initializer → mem-initializer-id OPEN_PAREN expression-list-opt • CLOSE_PAREN CLOSE_PAREN shift, and go to state 1257
5 ELLIPSIS-opt → • %empty [COMMA, OPEN_BRACE] 6 | • ELLIPSIS 403 mem-initializer-list → mem-initializer-list COMMA mem-initializer • ELLIPSIS-opt ELLIPSIS shift, and go to state 155 $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 1258
335 handler → CATCH • OPEN_PAREN exception-declaration CLOSE_PAREN compound-statement OPEN_PAREN shift, and go to state 1259
335 handler → • CATCH OPEN_PAREN exception-declaration CLOSE_PAREN compound-statement 336 handler-seq → • handler handler-seq-opt 336 | handler • handler-seq-opt 337 handler-seq-opt → • %empty [$end, CONSTEXPR, ELLIPSIS, EXPORT, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, NOT, SCOPE, TEMPLATE, THIS, TYPENAME, VIRTUAL, PRIVATE, PROTECTED, PUBLIC, PLUS, MINUS, USING, SEMICOLON, ALIGNAS, OPEN_PAREN, AND, ASM, OPEN_SQUARE, COLON, CO_AWAIT, OPEN_BRACE, CLOSE_BRACE, CLASS, STRUCT, UNION, AND_AND, OPERATOR, CO_RETURN, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DELETE, ENUM, EXPLICIT, MULT, DEFAULT, TRY, MODULE, WHILE, DO, FOR, BREAK, CONTINUE, RETURN, GOTO, CASE, IMPORT, NAMESPACE, REQUIRES, NEW, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, DYNAMIC_CAST, STATIC_CAST, REINTERPRET_CAST, CONST_CAST, TYPEID, LITERAL, IF, ELSE, SWITCH, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE, THROW, SIZEOF, ALIGNOF, CO_YIELD] 338 | • handler-seq CATCH shift, and go to state 1207 $default reduce using rule 337 (handler-seq-opt) handler go to state 1208 handler-seq go to state 1260 handler-seq-opt go to state 1261
331 function-try-block → TRY ctor-initializer-opt compound-statement handler-seq • $default reduce using rule 331 (function-try-block)
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty 84 | • attribute-specifier-seq 553 parameters-and-qualifiers → OPEN_PAREN parameter-declaration-clause CLOSE_PAREN cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt • attribute-specifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 1262
116 brace-or-equal-initializer → • EQ initializer-clause 117 | • braced-init-list 118 brace-or-equal-initializer-opt → • %empty [COMMA, SEMICOLON] 119 | • brace-or-equal-initializer 120 braced-init-list → • OPEN_BRACE initializer-list COMMA-opt CLOSE_BRACE 121 | • OPEN_BRACE designated-initializer-list COMMA-opt CLOSE_BRACE 122 | • OPEN_BRACE CLOSE_BRACE 418 member-declarator → IDENTIFIER-opt attribute-specifier-seq-opt COLON constant-expression • brace-or-equal-initializer-opt EQ shift, and go to state 376 OPEN_BRACE shift, and go to state 378 $default reduce using rule 118 (brace-or-equal-initializer-opt) brace-or-equal-initializer go to state 1020 brace-or-equal-initializer-opt go to state 1263 braced-init-list go to state 381
596 pure-specifier → EQ '0' • $default reduce using rule 596 (pure-specifier)
416 member-declarator → declarator requires-clause • $default reduce using rule 416 (member-declarator)
415 member-declarator → declarator virt-specifier-seq-opt • pure-specifier-opt 596 pure-specifier → • EQ '0' 597 pure-specifier-opt → • %empty [COMMA, SEMICOLON] 598 | • pure-specifier EQ shift, and go to state 1264 $default reduce using rule 597 (pure-specifier-opt) pure-specifier go to state 1144 pure-specifier-opt go to state 1145
215 deduction-guide → explicit-specifier-opt template-name OPEN_PAREN parameter-declaration-clause CLOSE_PAREN DEREF simple-template-id SEMICOLON • $default reduce using rule 215 (deduction-guide)
583 private-module-fragment → MODULE COLON PRIVATE SEMICOLON declaration-seq-opt • $default reduce using rule 583 (private-module-fragment)
45 alignment-specifier → • ALIGNAS OPEN_PAREN type-id ELLIPSIS-opt CLOSE_PAREN 46 | • ALIGNAS OPEN_PAREN constant-expression ELLIPSIS-opt CLOSE_PAREN 80 attribute-specifier → • OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE 81 | • alignment-specifier 82 attribute-specifier-seq → attribute-specifier-seq-opt • attribute-specifier 483 noptr-abstract-declarator → noptr-abstract-declarator-opt OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt • [COMMA, ELLIPSIS, EQ, SEMICOLON, OPEN_PAREN, CLOSE_PAREN, OPEN_SQUARE, COLON, OPEN_BRACE, FINAL, GREATER, TRY, REQUIRES, OVERRIDE] ALIGNAS shift, and go to state 157 OPEN_SQUARE shift, and go to state 161 OPEN_SQUARE [reduce using rule 483 (noptr-abstract-declarator)] $default reduce using rule 483 (noptr-abstract-declarator) alignment-specifier go to state 165 attribute-specifier go to state 166
45 alignment-specifier → • ALIGNAS OPEN_PAREN type-id ELLIPSIS-opt CLOSE_PAREN 46 | • ALIGNAS OPEN_PAREN constant-expression ELLIPSIS-opt CLOSE_PAREN 80 attribute-specifier → • OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE 81 | • alignment-specifier 82 attribute-specifier-seq → attribute-specifier-seq-opt • attribute-specifier 488 noptr-abstract-pack-declarator → noptr-abstract-pack-declarator OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt • [COMMA, ELLIPSIS, EQ, SEMICOLON, OPEN_PAREN, CLOSE_PAREN, OPEN_SQUARE, COLON, OPEN_BRACE, FINAL, GREATER, TRY, REQUIRES, OVERRIDE] ALIGNAS shift, and go to state 157 OPEN_SQUARE shift, and go to state 161 OPEN_SQUARE [reduce using rule 488 (noptr-abstract-pack-declarator)] $default reduce using rule 488 (noptr-abstract-pack-declarator) alignment-specifier go to state 165 attribute-specifier go to state 166
287 fold-expression → OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN • $default reduce using rule 287 (fold-expression)
723 type-requirement → TYPENAME nested-name-specifier-opt type-name SEMICOLON • $default reduce using rule 723 (type-requirement)
16 NOEXCEPT-opt → NOEXCEPT • $default reduce using rule 16 (NOEXCEPT-opt)
148 compound-requirement → OPEN_BRACE expression CLOSE_BRACE NOEXCEPT-opt • return-type-requirement-opt SEMICOLON 624 return-type-requirement → • DEREF type-constraint 625 return-type-requirement-opt → • %empty [SEMICOLON] 626 | • return-type-requirement DEREF shift, and go to state 1265 $default reduce using rule 625 (return-type-requirement-opt) return-type-requirement go to state 1266 return-type-requirement-opt go to state 1267
570 postfix-expression → DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN • $default reduce using rule 570 (postfix-expression)
571 postfix-expression → STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN • $default reduce using rule 571 (postfix-expression)
572 postfix-expression → REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN • $default reduce using rule 572 (postfix-expression)
573 postfix-expression → CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN • $default reduce using rule 573 (postfix-expression)
467 new-expression → SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt • $default reduce using rule 467 (new-expression)
468 new-initializer → OPEN_PAREN expression-list-opt CLOSE_PAREN • $default reduce using rule 468 (new-initializer)
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty 84 | • attribute-specifier-seq 494 noptr-new-declarator → OPEN_SQUARE expression-opt CLOSE_SQUARE • attribute-specifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 1268
495 noptr-new-declarator → noptr-new-declarator OPEN_SQUARE constant-expression • CLOSE_SQUARE attribute-specifier-seq-opt CLOSE_SQUARE shift, and go to state 1269
387 lambda-expression → lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement • $default reduce using rule 387 (lambda-expression)
376 labeled-statement → attribute-specifier-seq-opt IDENTIFIER COLON statement • $default reduce using rule 376 (labeled-statement)
171 coroutine-return-statement → CO_RETURN expr-or-braced-init-list-opt SEMICOLON • $default reduce using rule 171 (coroutine-return-statement)
378 labeled-statement → attribute-specifier-seq-opt DEFAULT COLON statement • $default reduce using rule 378 (labeled-statement)
706 try-block → TRY compound-statement handler-seq • $default reduce using rule 706 (try-block)
45 alignment-specifier → • ALIGNAS OPEN_PAREN type-id ELLIPSIS-opt CLOSE_PAREN 46 | • ALIGNAS OPEN_PAREN constant-expression ELLIPSIS-opt CLOSE_PAREN 80 attribute-specifier → • OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE 81 | • alignment-specifier 82 attribute-specifier-seq → attribute-specifier-seq-opt • attribute-specifier 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 153 condition → attribute-specifier-seq-opt • decl-specifier-seq declarator brace-or-equal-initializer 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id CONSTEXPR shift, and go to state 1 EXTERN shift, and go to state 149 IDENTIFIER shift, and go to state 4 INLINE shift, and go to state 150 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 ALIGNAS shift, and go to state 157 OPEN_SQUARE shift, and go to state 161 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] $default reduce using rule 709 (type-constraint-opt) alignment-specifier go to state 165 attribute-specifier go to state 166 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 1270 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 153 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109
367 iteration-statement → WHILE OPEN_PAREN condition • CLOSE_PAREN statement CLOSE_PAREN shift, and go to state 1271
152 condition → expression • [SEMICOLON, CLOSE_PAREN] 278 expression → expression • COMMA assignment-expression COMMA shift, and go to state 532 $default reduce using rule 152 (condition)
368 iteration-statement → DO statement WHILE • OPEN_PAREN expression CLOSE_PAREN SEMICOLON OPEN_PAREN shift, and go to state 1272
44 alias-declaration → USING • IDENTIFIER attribute-specifier-seq-opt EQ defining-type-id SEMICOLON IDENTIFIER shift, and go to state 122
356 init-statement → alias-declaration • $default reduce using rule 356 (init-statement)
45 alignment-specifier → • ALIGNAS OPEN_PAREN type-id ELLIPSIS-opt CLOSE_PAREN 46 | • ALIGNAS OPEN_PAREN constant-expression ELLIPSIS-opt CLOSE_PAREN 80 attribute-specifier → • OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE 81 | • alignment-specifier 82 attribute-specifier-seq → attribute-specifier-seq-opt • attribute-specifier 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 641 simple-declaration → attribute-specifier-seq-opt • decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE initializer SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id CONSTEXPR shift, and go to state 1 EXTERN shift, and go to state 149 IDENTIFIER shift, and go to state 4 INLINE shift, and go to state 150 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 ALIGNAS shift, and go to state 157 OPEN_SQUARE shift, and go to state 161 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] $default reduce using rule 709 (type-constraint-opt) alignment-specifier go to state 165 attribute-specifier go to state 166 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 1107 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 153 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109
354 init-statement → expression-statement • $default reduce using rule 354 (init-statement)
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, EXTERN, IDENTIFIER, INLINE, SCOPE, TYPENAME, VIRTUAL, ALIGNAS, OPEN_SQUARE, CLASS, STRUCT, UNION, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 84 | • attribute-specifier-seq 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 152 condition → • expression 153 | • attribute-specifier-seq-opt decl-specifier-seq declarator brace-or-equal-initializer 154 condition-opt → • %empty [SEMICOLON] 155 | • condition 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 277 expression → • assignment-expression 278 | • expression COMMA assignment-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 358 init-statement-opt → init-statement • [CONSTEXPR, EXTERN, IDENTIFIER, INLINE, SCOPE, TYPENAME, VIRTUAL, ALIGNAS, OPEN_SQUARE, CLASS, STRUCT, UNION, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 369 iteration-statement → FOR OPEN_PAREN init-statement • condition-opt SEMICOLON expression-opt CLOSE_PAREN statement 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 CONSTEXPR reduce using rule 83 (attribute-specifier-seq-opt) CONSTEXPR [reduce using rule 358 (init-statement-opt)] EXTERN reduce using rule 83 (attribute-specifier-seq-opt) EXTERN [reduce using rule 358 (init-statement-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 358 (init-statement-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] INLINE reduce using rule 83 (attribute-specifier-seq-opt) INLINE [reduce using rule 358 (init-statement-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] SCOPE [reduce using rule 358 (init-statement-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] TYPENAME [reduce using rule 358 (init-statement-opt)] VIRTUAL reduce using rule 83 (attribute-specifier-seq-opt) VIRTUAL [reduce using rule 358 (init-statement-opt)] SEMICOLON reduce using rule 154 (condition-opt) ALIGNAS reduce using rule 83 (attribute-specifier-seq-opt) ALIGNAS [reduce using rule 358 (init-statement-opt)] OPEN_SQUARE [reduce using rule 83 (attribute-specifier-seq-opt)] OPEN_SQUARE [reduce using rule 358 (init-statement-opt)] CLASS reduce using rule 83 (attribute-specifier-seq-opt) CLASS [reduce using rule 358 (init-statement-opt)] STRUCT reduce using rule 83 (attribute-specifier-seq-opt) STRUCT [reduce using rule 358 (init-statement-opt)] UNION reduce using rule 83 (attribute-specifier-seq-opt) UNION [reduce using rule 358 (init-statement-opt)] CONST reduce using rule 83 (attribute-specifier-seq-opt) CONST [reduce using rule 358 (init-statement-opt)] VOLATILE reduce using rule 83 (attribute-specifier-seq-opt) VOLATILE [reduce using rule 358 (init-statement-opt)] FRIEND reduce using rule 83 (attribute-specifier-seq-opt) FRIEND [reduce using rule 358 (init-statement-opt)] TYPEDEF reduce using rule 83 (attribute-specifier-seq-opt) TYPEDEF [reduce using rule 358 (init-statement-opt)] CONSTEVAL reduce using rule 83 (attribute-specifier-seq-opt) CONSTEVAL [reduce using rule 358 (init-statement-opt)] CONSTINIT reduce using rule 83 (attribute-specifier-seq-opt) CONSTINIT [reduce using rule 358 (init-statement-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 358 (init-statement-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] DELETE reduce using rule 19 (SCOPE-opt) ENUM reduce using rule 83 (attribute-specifier-seq-opt) ENUM [reduce using rule 358 (init-statement-opt)] EXPLICIT reduce using rule 83 (attribute-specifier-seq-opt) EXPLICIT [reduce using rule 358 (init-statement-opt)] NEW reduce using rule 19 (SCOPE-opt) AUTO reduce using rule 83 (attribute-specifier-seq-opt) AUTO [reduce using rule 358 (init-statement-opt)] AUTO [reduce using rule 709 (type-constraint-opt)] CHAR [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR [reduce using rule 358 (init-statement-opt)] CHAR8_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR8_T [reduce using rule 358 (init-statement-opt)] CHAR16_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR16_T [reduce using rule 358 (init-statement-opt)] CHAR32_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR32_T [reduce using rule 358 (init-statement-opt)] WCHAR_T [reduce using rule 83 (attribute-specifier-seq-opt)] WCHAR_T [reduce using rule 358 (init-statement-opt)] BOOL [reduce using rule 83 (attribute-specifier-seq-opt)] BOOL [reduce using rule 358 (init-statement-opt)] SHORT [reduce using rule 83 (attribute-specifier-seq-opt)] SHORT [reduce using rule 358 (init-statement-opt)] INT [reduce using rule 83 (attribute-specifier-seq-opt)] INT [reduce using rule 358 (init-statement-opt)] LONG [reduce using rule 83 (attribute-specifier-seq-opt)] LONG [reduce using rule 358 (init-statement-opt)] SIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] SIGNED [reduce using rule 358 (init-statement-opt)] UNSIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] UNSIGNED [reduce using rule 358 (init-statement-opt)] FLOAT [reduce using rule 83 (attribute-specifier-seq-opt)] FLOAT [reduce using rule 358 (init-statement-opt)] DOUBLE [reduce using rule 83 (attribute-specifier-seq-opt)] DOUBLE [reduce using rule 358 (init-statement-opt)] VOID [reduce using rule 83 (attribute-specifier-seq-opt)] VOID [reduce using rule 358 (init-statement-opt)] STATIC reduce using rule 83 (attribute-specifier-seq-opt) STATIC [reduce using rule 358 (init-statement-opt)] THREAD_LOCAL reduce using rule 83 (attribute-specifier-seq-opt) THREAD_LOCAL [reduce using rule 358 (init-statement-opt)] MUTABLE reduce using rule 83 (attribute-specifier-seq-opt) MUTABLE [reduce using rule 358 (init-statement-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 1236 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 condition go to state 1273 condition-opt go to state 1274 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 1238 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty 84 | • attribute-specifier-seq 320 for-range-declaration → • attribute-specifier-seq-opt decl-specifier-seq declarator 321 | • attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE 370 iteration-statement → FOR OPEN_PAREN init-statement-opt • for-range-declaration COLON for-range-initializer CLOSE_PAREN statement $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 1275 for-range-declaration go to state 1276
355 init-statement → simple-declaration • $default reduce using rule 355 (init-statement)
373 jump-statement → RETURN expr-or-braced-init-list-opt SEMICOLON • $default reduce using rule 373 (jump-statement)
375 jump-statement → GOTO IDENTIFIER SEMICOLON • $default reduce using rule 375 (jump-statement)
44 alias-declaration → • USING IDENTIFIER attribute-specifier-seq-opt EQ defining-type-id SEMICOLON 49 asm-declaration → • attribute-specifier-seq-opt ASM OPEN_PAREN string-literal CLOSE_PAREN SEMICOLON 82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, NOT, SCOPE, THIS, TYPENAME, VIRTUAL, PLUS, MINUS, USING, SEMICOLON, ALIGNAS, OPEN_PAREN, AND, ASM, OPEN_SQUARE, CO_AWAIT, OPEN_BRACE, CLASS, STRUCT, UNION, OPERATOR, CO_RETURN, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DELETE, ENUM, EXPLICIT, MULT, DEFAULT, TRY, WHILE, DO, FOR, BREAK, CONTINUE, RETURN, GOTO, CASE, REQUIRES, NEW, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, DYNAMIC_CAST, STATIC_CAST, REINTERPRET_CAST, CONST_CAST, TYPEID, LITERAL, IF, SWITCH, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE, THROW, SIZEOF, ALIGNOF, CO_YIELD] 84 | • attribute-specifier-seq 107 block-declaration → • simple-declaration 108 | • asm-declaration 109 | • namespace-alias-definition 110 | • using-declaration 111 | • using-enum-declaration 112 | • using-directive 113 | • static_assert-declaration 114 | • alias-declaration 115 | • opaque-enum-declaration 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 210 declaration-statement → • block-declaration 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 376 labeled-statement → • attribute-specifier-seq-opt IDENTIFIER COLON statement 377 | • attribute-specifier-seq-opt CASE constant-expression COLON statement 377 | attribute-specifier-seq-opt CASE constant-expression COLON • statement 378 | • attribute-specifier-seq-opt DEFAULT COLON statement 444 namespace-alias → • IDENTIFIER 445 namespace-alias-definition → • NAMESPACE IDENTIFIER EQ qualified-namespace-specifier SEMICOLON 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 496 opaque-enum-declaration → • enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt SEMICOLON 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 639 simple-declaration → • decl-specifier-seq init-declarator-list-opt SEMICOLON 640 | • attribute-specifier-seq decl-specifier-seq init-declarator-list SEMICOLON 641 | • attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE initializer SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 663 statement → • labeled-statement 664 | • attribute-specifier-seq-opt expression-statement 665 | • attribute-specifier-seq-opt compound-statement 666 | • attribute-specifier-seq-opt selection-statement 667 | • attribute-specifier-seq-opt iteration-statement 668 | • attribute-specifier-seq-opt jump-statement 669 | • declaration-statement 670 | • attribute-specifier-seq-opt try-block 675 static_assert-declaration → • STATIC_ASSERT OPEN_PAREN constant-expression CLOSE_PAREN SEMICOLON 676 | • STATIC_ASSERT OPEN_PAREN constant-expression COMMA string-literal CLOSE_PAREN SEMICOLON 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 762 using-declaration → • USING using-declarator-list SEMICOLON 766 using-directive → • attribute-specifier-seq-opt USING NAMESPACE nested-name-specifier-opt namespace-name SEMICOLON 767 using-enum-declaration → • USING elaborated-enum-specifier SEMICOLON CONSTEXPR shift, and go to state 1 EXTERN shift, and go to state 149 IDENTIFIER shift, and go to state 4 INLINE shift, and go to state 150 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 USING shift, and go to state 10 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 NAMESPACE shift, and go to state 970 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC_ASSERT shift, and go to state 41 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 CONSTEXPR [reduce using rule 83 (attribute-specifier-seq-opt)] EXTERN [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] INLINE [reduce using rule 83 (attribute-specifier-seq-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] VIRTUAL [reduce using rule 83 (attribute-specifier-seq-opt)] USING [reduce using rule 83 (attribute-specifier-seq-opt)] CLASS [reduce using rule 83 (attribute-specifier-seq-opt)] STRUCT [reduce using rule 83 (attribute-specifier-seq-opt)] UNION [reduce using rule 83 (attribute-specifier-seq-opt)] CONST [reduce using rule 83 (attribute-specifier-seq-opt)] VOLATILE [reduce using rule 83 (attribute-specifier-seq-opt)] FRIEND [reduce using rule 83 (attribute-specifier-seq-opt)] TYPEDEF [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTEVAL [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTINIT [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] ENUM [reduce using rule 83 (attribute-specifier-seq-opt)] EXPLICIT [reduce using rule 83 (attribute-specifier-seq-opt)] AUTO reduce using rule 83 (attribute-specifier-seq-opt) AUTO [reduce using rule 709 (type-constraint-opt)] CHAR [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR8_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR16_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR32_T [reduce using rule 83 (attribute-specifier-seq-opt)] WCHAR_T [reduce using rule 83 (attribute-specifier-seq-opt)] BOOL [reduce using rule 83 (attribute-specifier-seq-opt)] SHORT [reduce using rule 83 (attribute-specifier-seq-opt)] INT [reduce using rule 83 (attribute-specifier-seq-opt)] LONG [reduce using rule 83 (attribute-specifier-seq-opt)] SIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] UNSIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] FLOAT [reduce using rule 83 (attribute-specifier-seq-opt)] DOUBLE [reduce using rule 83 (attribute-specifier-seq-opt)] VOID [reduce using rule 83 (attribute-specifier-seq-opt)] STATIC [reduce using rule 83 (attribute-specifier-seq-opt)] THREAD_LOCAL [reduce using rule 83 (attribute-specifier-seq-opt)] MUTABLE [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 971 attribute-specifier-seq-opt go to state 972 block-declaration go to state 973 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 974 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 labeled-statement go to state 975 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1277 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 44 alias-declaration → • USING IDENTIFIER attribute-specifier-seq-opt EQ defining-type-id SEMICOLON 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, EXTERN, IDENTIFIER, INLINE, SCOPE, TYPENAME, VIRTUAL, ALIGNAS, OPEN_SQUARE, CLASS, STRUCT, UNION, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 84 | • attribute-specifier-seq 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 277 expression → • assignment-expression 278 | • expression COMMA assignment-expression 282 expression-opt → • %empty [SEMICOLON] 283 | • expression 284 expression-statement → • expression-opt SEMICOLON 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 354 init-statement → • expression-statement 355 | • simple-declaration 356 | • alias-declaration 357 init-statement-opt → • %empty [CONSTEXPR, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, NOT, SCOPE, THIS, TYPENAME, VIRTUAL, PLUS, MINUS, ALIGNAS, OPEN_PAREN, AND, OPEN_SQUARE, CO_AWAIT, CLASS, STRUCT, UNION, OPERATOR, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DELETE, ENUM, EXPLICIT, MULT, REQUIRES, NEW, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, DYNAMIC_CAST, STATIC_CAST, REINTERPRET_CAST, CONST_CAST, TYPEID, LITERAL, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE, THROW, SIZEOF, ALIGNOF, CO_YIELD] 358 | • init-statement 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 627 selection-statement → IF CONSTEXPR-opt OPEN_PAREN • init-statement-opt condition CLOSE_PAREN statement 628 | IF CONSTEXPR-opt OPEN_PAREN • init-statement-opt condition CLOSE_PAREN statement ELSE statement 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 639 simple-declaration → • decl-specifier-seq init-declarator-list-opt SEMICOLON 640 | • attribute-specifier-seq decl-specifier-seq init-declarator-list SEMICOLON 641 | • attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE initializer SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list CONSTEXPR shift, and go to state 1 EXTERN shift, and go to state 149 IDENTIFIER shift, and go to state 237 INLINE shift, and go to state 150 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 PLUS shift, and go to state 242 MINUS shift, and go to state 243 USING shift, and go to state 1240 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 OPERATOR shift, and go to state 248 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 CONSTEXPR [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTEXPR [reduce using rule 357 (init-statement-opt)] EXTERN [reduce using rule 83 (attribute-specifier-seq-opt)] EXTERN [reduce using rule 357 (init-statement-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 357 (init-statement-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] INLINE [reduce using rule 83 (attribute-specifier-seq-opt)] INLINE [reduce using rule 357 (init-statement-opt)] NOEXCEPT [reduce using rule 357 (init-statement-opt)] NOT [reduce using rule 357 (init-statement-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] SCOPE [reduce using rule 357 (init-statement-opt)] THIS [reduce using rule 357 (init-statement-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] TYPENAME [reduce using rule 357 (init-statement-opt)] VIRTUAL [reduce using rule 83 (attribute-specifier-seq-opt)] VIRTUAL [reduce using rule 357 (init-statement-opt)] PLUS [reduce using rule 357 (init-statement-opt)] MINUS [reduce using rule 357 (init-statement-opt)] SEMICOLON reduce using rule 282 (expression-opt) ALIGNAS reduce using rule 83 (attribute-specifier-seq-opt) ALIGNAS [reduce using rule 357 (init-statement-opt)] OPEN_PAREN [reduce using rule 357 (init-statement-opt)] AND [reduce using rule 357 (init-statement-opt)] OPEN_SQUARE [reduce using rule 83 (attribute-specifier-seq-opt)] OPEN_SQUARE [reduce using rule 357 (init-statement-opt)] CO_AWAIT [reduce using rule 357 (init-statement-opt)] CLASS [reduce using rule 83 (attribute-specifier-seq-opt)] CLASS [reduce using rule 357 (init-statement-opt)] STRUCT [reduce using rule 83 (attribute-specifier-seq-opt)] STRUCT [reduce using rule 357 (init-statement-opt)] UNION [reduce using rule 83 (attribute-specifier-seq-opt)] UNION [reduce using rule 357 (init-statement-opt)] OPERATOR [reduce using rule 357 (init-statement-opt)] CONST [reduce using rule 83 (attribute-specifier-seq-opt)] CONST [reduce using rule 357 (init-statement-opt)] VOLATILE [reduce using rule 83 (attribute-specifier-seq-opt)] VOLATILE [reduce using rule 357 (init-statement-opt)] FRIEND [reduce using rule 83 (attribute-specifier-seq-opt)] FRIEND [reduce using rule 357 (init-statement-opt)] TYPEDEF [reduce using rule 83 (attribute-specifier-seq-opt)] TYPEDEF [reduce using rule 357 (init-statement-opt)] CONSTEVAL [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTEVAL [reduce using rule 357 (init-statement-opt)] CONSTINIT [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTINIT [reduce using rule 357 (init-statement-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 357 (init-statement-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] DELETE reduce using rule 19 (SCOPE-opt) DELETE [reduce using rule 357 (init-statement-opt)] ENUM [reduce using rule 83 (attribute-specifier-seq-opt)] ENUM [reduce using rule 357 (init-statement-opt)] EXPLICIT [reduce using rule 83 (attribute-specifier-seq-opt)] EXPLICIT [reduce using rule 357 (init-statement-opt)] MULT [reduce using rule 357 (init-statement-opt)] REQUIRES [reduce using rule 357 (init-statement-opt)] NEW reduce using rule 19 (SCOPE-opt) NEW [reduce using rule 357 (init-statement-opt)] COMPL [reduce using rule 357 (init-statement-opt)] PLUS_PLUS [reduce using rule 357 (init-statement-opt)] MINUS_MINUS [reduce using rule 357 (init-statement-opt)] AUTO reduce using rule 83 (attribute-specifier-seq-opt) AUTO [reduce using rule 357 (init-statement-opt)] AUTO [reduce using rule 709 (type-constraint-opt)] DYNAMIC_CAST [reduce using rule 357 (init-statement-opt)] STATIC_CAST [reduce using rule 357 (init-statement-opt)] REINTERPRET_CAST [reduce using rule 357 (init-statement-opt)] CONST_CAST [reduce using rule 357 (init-statement-opt)] TYPEID [reduce using rule 357 (init-statement-opt)] LITERAL [reduce using rule 357 (init-statement-opt)] CHAR [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR [reduce using rule 357 (init-statement-opt)] CHAR8_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR8_T [reduce using rule 357 (init-statement-opt)] CHAR16_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR16_T [reduce using rule 357 (init-statement-opt)] CHAR32_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR32_T [reduce using rule 357 (init-statement-opt)] WCHAR_T [reduce using rule 83 (attribute-specifier-seq-opt)] WCHAR_T [reduce using rule 357 (init-statement-opt)] BOOL [reduce using rule 83 (attribute-specifier-seq-opt)] BOOL [reduce using rule 357 (init-statement-opt)] SHORT [reduce using rule 83 (attribute-specifier-seq-opt)] SHORT [reduce using rule 357 (init-statement-opt)] INT [reduce using rule 83 (attribute-specifier-seq-opt)] INT [reduce using rule 357 (init-statement-opt)] LONG [reduce using rule 83 (attribute-specifier-seq-opt)] LONG [reduce using rule 357 (init-statement-opt)] SIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] SIGNED [reduce using rule 357 (init-statement-opt)] UNSIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] UNSIGNED [reduce using rule 357 (init-statement-opt)] FLOAT [reduce using rule 83 (attribute-specifier-seq-opt)] FLOAT [reduce using rule 357 (init-statement-opt)] DOUBLE [reduce using rule 83 (attribute-specifier-seq-opt)] DOUBLE [reduce using rule 357 (init-statement-opt)] VOID [reduce using rule 83 (attribute-specifier-seq-opt)] VOID [reduce using rule 357 (init-statement-opt)] STATIC [reduce using rule 83 (attribute-specifier-seq-opt)] STATIC [reduce using rule 357 (init-statement-opt)] THREAD_LOCAL [reduce using rule 83 (attribute-specifier-seq-opt)] THREAD_LOCAL [reduce using rule 357 (init-statement-opt)] MUTABLE [reduce using rule 83 (attribute-specifier-seq-opt)] MUTABLE [reduce using rule 357 (init-statement-opt)] THROW [reduce using rule 357 (init-statement-opt)] SIZEOF [reduce using rule 357 (init-statement-opt)] ALIGNOF [reduce using rule 357 (init-statement-opt)] CO_YIELD [reduce using rule 357 (init-statement-opt)] $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 alias-declaration go to state 1241 and-expression go to state 266 assignment-expression go to state 267 attribute-specifier-seq go to state 971 attribute-specifier-seq-opt go to state 1242 await-expression go to state 268 cast-expression go to state 269 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 decltype-specifier go to state 63 defining-type-specifier go to state 65 delete-expression go to state 273 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 153 enum-name go to state 71 enum-specifier go to state 72 equality-expression go to state 274 exclusive-or-expression go to state 275 explicit-specifier go to state 154 expression go to state 1108 expression-opt go to state 1109 expression-statement go to state 1243 fold-expression go to state 277 function-specifier go to state 79 id-expression go to state 278 inclusive-or-expression go to state 279 init-statement go to state 1252 init-statement-opt go to state 1278 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-declaration go to state 1246 simple-template-id go to state 297 simple-type-specifier go to state 407 storage-class-specifier go to state 99 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 414 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
149 compound-statement → • OPEN_BRACE statement-seq-opt CLOSE_BRACE 629 selection-statement → IF NOT-opt CONSTEVAL • compound-statement 630 | IF NOT-opt CONSTEVAL • compound-statement ELSE statement OPEN_BRACE shift, and go to state 792 compound-statement go to state 1279
358 init-statement-opt → init-statement • $default reduce using rule 358 (init-statement-opt)
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, EXTERN, IDENTIFIER, INLINE, SCOPE, TYPENAME, VIRTUAL, ALIGNAS, OPEN_SQUARE, CLASS, STRUCT, UNION, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 84 | • attribute-specifier-seq 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 152 condition → • expression 153 | • attribute-specifier-seq-opt decl-specifier-seq declarator brace-or-equal-initializer 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 277 expression → • assignment-expression 278 | • expression COMMA assignment-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 631 selection-statement → SWITCH OPEN_PAREN init-statement-opt • condition CLOSE_PAREN statement 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] OPEN_SQUARE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] DELETE reduce using rule 19 (SCOPE-opt) NEW reduce using rule 19 (SCOPE-opt) AUTO reduce using rule 83 (attribute-specifier-seq-opt) AUTO [reduce using rule 709 (type-constraint-opt)] CHAR [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR8_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR16_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR32_T [reduce using rule 83 (attribute-specifier-seq-opt)] WCHAR_T [reduce using rule 83 (attribute-specifier-seq-opt)] BOOL [reduce using rule 83 (attribute-specifier-seq-opt)] SHORT [reduce using rule 83 (attribute-specifier-seq-opt)] INT [reduce using rule 83 (attribute-specifier-seq-opt)] LONG [reduce using rule 83 (attribute-specifier-seq-opt)] SIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] UNSIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] FLOAT [reduce using rule 83 (attribute-specifier-seq-opt)] DOUBLE [reduce using rule 83 (attribute-specifier-seq-opt)] VOID [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 1236 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 condition go to state 1280 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 1238 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
91 balanced-token → OPEN_PAREN balanced-token-seq-opt CLOSE_PAREN • $default reduce using rule 91 (balanced-token)
92 balanced-token → OPEN_SQUARE balanced-token-seq-opt CLOSE_SQUARE • $default reduce using rule 92 (balanced-token)
93 balanced-token → OPEN_BRACE balanced-token-seq-opt CLOSE_BRACE • $default reduce using rule 93 (balanced-token)
398 mem-initializer → mem-initializer-id OPEN_PAREN expression-list-opt CLOSE_PAREN • $default reduce using rule 398 (mem-initializer)
403 mem-initializer-list → mem-initializer-list COMMA mem-initializer ELLIPSIS-opt • $default reduce using rule 403 (mem-initializer-list)
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [IDENTIFIER, SCOPE, TYPENAME, ALIGNAS, OPEN_SQUARE, CLASS, STRUCT, UNION, CONST, VOLATILE, DECLTYPE, ENUM, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID] 84 | • attribute-specifier-seq 259 exception-declaration → • attribute-specifier-seq-opt type-specifier-seq declarator 260 | • attribute-specifier-seq-opt type-specifier-seq abstract-declarator-opt 261 | • ELLIPSIS 335 handler → CATCH OPEN_PAREN • exception-declaration CLOSE_PAREN compound-statement ELLIPSIS shift, and go to state 1281 $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 1282 exception-declaration go to state 1283
338 handler-seq-opt → handler-seq • $default reduce using rule 338 (handler-seq-opt)
336 handler-seq → handler handler-seq-opt • $default reduce using rule 336 (handler-seq)
45 alignment-specifier → • ALIGNAS OPEN_PAREN type-id ELLIPSIS-opt CLOSE_PAREN 46 | • ALIGNAS OPEN_PAREN constant-expression ELLIPSIS-opt CLOSE_PAREN 80 attribute-specifier → • OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE 81 | • alignment-specifier 82 attribute-specifier-seq → attribute-specifier-seq-opt • attribute-specifier 553 parameters-and-qualifiers → OPEN_PAREN parameter-declaration-clause CLOSE_PAREN cv-qualifier-seq-opt ref-qualifier-opt noexcept-specifier-opt attribute-specifier-seq-opt • [COMMA, ELLIPSIS, EQ, SEMICOLON, OPEN_PAREN, CLOSE_PAREN, OPEN_SQUARE, COLON, OPEN_BRACE, FINAL, DEREF, GREATER, TRY, REQUIRES, OVERRIDE] ALIGNAS shift, and go to state 157 OPEN_SQUARE shift, and go to state 161 OPEN_SQUARE [reduce using rule 553 (parameters-and-qualifiers)] $default reduce using rule 553 (parameters-and-qualifiers) alignment-specifier go to state 165 attribute-specifier go to state 166
418 member-declarator → IDENTIFIER-opt attribute-specifier-seq-opt COLON constant-expression brace-or-equal-initializer-opt • $default reduce using rule 418 (member-declarator)
596 pure-specifier → EQ • '0' '0' shift, and go to state 1212
137 class-name → • IDENTIFIER 138 | • simple-template-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 624 return-type-requirement → DEREF • type-constraint 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 DECLTYPE shift, and go to state 21 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] class-name go to state 55 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 132 nested-name-specifier-opt go to state 220 simple-template-id go to state 96 template-name go to state 102 type-constraint go to state 1284 type-name go to state 106 typedef-name go to state 108
626 return-type-requirement-opt → return-type-requirement • $default reduce using rule 626 (return-type-requirement-opt)
148 compound-requirement → OPEN_BRACE expression CLOSE_BRACE NOEXCEPT-opt return-type-requirement-opt • SEMICOLON SEMICOLON shift, and go to state 1285
45 alignment-specifier → • ALIGNAS OPEN_PAREN type-id ELLIPSIS-opt CLOSE_PAREN 46 | • ALIGNAS OPEN_PAREN constant-expression ELLIPSIS-opt CLOSE_PAREN 80 attribute-specifier → • OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE 81 | • alignment-specifier 82 attribute-specifier-seq → attribute-specifier-seq-opt • attribute-specifier 494 noptr-new-declarator → OPEN_SQUARE expression-opt CLOSE_SQUARE attribute-specifier-seq-opt • [COMMA, ELLIPSIS, PLUS, MINUS, EQ, SEMICOLON, OPEN_PAREN, CLOSE_PAREN, AND, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, OPEN_SQUARE, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, SPACESHIP, QUERY, AND_AND, OR_OR, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR] ALIGNAS shift, and go to state 157 OPEN_SQUARE shift, and go to state 161 OPEN_SQUARE [reduce using rule 494 (noptr-new-declarator)] $default reduce using rule 494 (noptr-new-declarator) alignment-specifier go to state 165 attribute-specifier go to state 166
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty 84 | • attribute-specifier-seq 495 noptr-new-declarator → noptr-new-declarator OPEN_SQUARE constant-expression CLOSE_SQUARE • attribute-specifier-seq-opt $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 1286
5 ELLIPSIS-opt → • %empty [IDENTIFIER, SCOPE, OPERATOR, DECLTYPE, COMPL] 6 | • ELLIPSIS 137 class-name → • IDENTIFIER 138 | • simple-template-id 153 condition → attribute-specifier-seq-opt decl-specifier-seq • declarator brace-or-equal-initializer 211 declarator → • ptr-declarator 212 | • noptr-declarator parameters-and-qualifiers trailing-return-type 213 declarator-id → • ELLIPSIS-opt id-expression 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 490 noptr-declarator → • declarator-id attribute-specifier-seq-opt 491 | • noptr-declarator parameters-and-qualifiers 492 | • noptr-declarator OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 493 | • OPEN_PAREN ptr-declarator CLOSE_PAREN 590 ptr-declarator → • noptr-declarator 591 | • ptr-operator ptr-declarator 592 ptr-operator → • MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 593 | • AND attribute-specifier-seq-opt 594 | • AND_AND attribute-specifier-seq-opt 595 | • nested-name-specifier MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id ELLIPSIS shift, and go to state 155 IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 OPEN_PAREN shift, and go to state 158 AND shift, and go to state 159 AND_AND shift, and go to state 162 DECLTYPE shift, and go to state 21 MULT shift, and go to state 163 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] SCOPE [reduce using rule 5 (ELLIPSIS-opt)] DECLTYPE [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 164 class-name go to state 55 declarator go to state 1287 declarator-id go to state 170 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 noptr-declarator go to state 172 ptr-declarator go to state 173 ptr-operator go to state 174 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
44 alias-declaration → • USING IDENTIFIER attribute-specifier-seq-opt EQ defining-type-id SEMICOLON 49 asm-declaration → • attribute-specifier-seq-opt ASM OPEN_PAREN string-literal CLOSE_PAREN SEMICOLON 82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, NOT, SCOPE, THIS, TYPENAME, VIRTUAL, PLUS, MINUS, USING, SEMICOLON, ALIGNAS, OPEN_PAREN, AND, ASM, OPEN_SQUARE, CO_AWAIT, OPEN_BRACE, CLASS, STRUCT, UNION, OPERATOR, CO_RETURN, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DELETE, ENUM, EXPLICIT, MULT, DEFAULT, TRY, WHILE, DO, FOR, BREAK, CONTINUE, RETURN, GOTO, CASE, REQUIRES, NEW, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, DYNAMIC_CAST, STATIC_CAST, REINTERPRET_CAST, CONST_CAST, TYPEID, LITERAL, IF, SWITCH, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE, THROW, SIZEOF, ALIGNOF, CO_YIELD] 84 | • attribute-specifier-seq 107 block-declaration → • simple-declaration 108 | • asm-declaration 109 | • namespace-alias-definition 110 | • using-declaration 111 | • using-enum-declaration 112 | • using-directive 113 | • static_assert-declaration 114 | • alias-declaration 115 | • opaque-enum-declaration 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 210 declaration-statement → • block-declaration 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 367 iteration-statement → WHILE OPEN_PAREN condition CLOSE_PAREN • statement 376 labeled-statement → • attribute-specifier-seq-opt IDENTIFIER COLON statement 377 | • attribute-specifier-seq-opt CASE constant-expression COLON statement 378 | • attribute-specifier-seq-opt DEFAULT COLON statement 444 namespace-alias → • IDENTIFIER 445 namespace-alias-definition → • NAMESPACE IDENTIFIER EQ qualified-namespace-specifier SEMICOLON 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 496 opaque-enum-declaration → • enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt SEMICOLON 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 639 simple-declaration → • decl-specifier-seq init-declarator-list-opt SEMICOLON 640 | • attribute-specifier-seq decl-specifier-seq init-declarator-list SEMICOLON 641 | • attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE initializer SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 663 statement → • labeled-statement 664 | • attribute-specifier-seq-opt expression-statement 665 | • attribute-specifier-seq-opt compound-statement 666 | • attribute-specifier-seq-opt selection-statement 667 | • attribute-specifier-seq-opt iteration-statement 668 | • attribute-specifier-seq-opt jump-statement 669 | • declaration-statement 670 | • attribute-specifier-seq-opt try-block 675 static_assert-declaration → • STATIC_ASSERT OPEN_PAREN constant-expression CLOSE_PAREN SEMICOLON 676 | • STATIC_ASSERT OPEN_PAREN constant-expression COMMA string-literal CLOSE_PAREN SEMICOLON 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 762 using-declaration → • USING using-declarator-list SEMICOLON 766 using-directive → • attribute-specifier-seq-opt USING NAMESPACE nested-name-specifier-opt namespace-name SEMICOLON 767 using-enum-declaration → • USING elaborated-enum-specifier SEMICOLON CONSTEXPR shift, and go to state 1 EXTERN shift, and go to state 149 IDENTIFIER shift, and go to state 4 INLINE shift, and go to state 150 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 USING shift, and go to state 10 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 NAMESPACE shift, and go to state 970 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC_ASSERT shift, and go to state 41 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 CONSTEXPR [reduce using rule 83 (attribute-specifier-seq-opt)] EXTERN [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] INLINE [reduce using rule 83 (attribute-specifier-seq-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] VIRTUAL [reduce using rule 83 (attribute-specifier-seq-opt)] USING [reduce using rule 83 (attribute-specifier-seq-opt)] CLASS [reduce using rule 83 (attribute-specifier-seq-opt)] STRUCT [reduce using rule 83 (attribute-specifier-seq-opt)] UNION [reduce using rule 83 (attribute-specifier-seq-opt)] CONST [reduce using rule 83 (attribute-specifier-seq-opt)] VOLATILE [reduce using rule 83 (attribute-specifier-seq-opt)] FRIEND [reduce using rule 83 (attribute-specifier-seq-opt)] TYPEDEF [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTEVAL [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTINIT [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] ENUM [reduce using rule 83 (attribute-specifier-seq-opt)] EXPLICIT [reduce using rule 83 (attribute-specifier-seq-opt)] AUTO reduce using rule 83 (attribute-specifier-seq-opt) AUTO [reduce using rule 709 (type-constraint-opt)] CHAR [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR8_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR16_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR32_T [reduce using rule 83 (attribute-specifier-seq-opt)] WCHAR_T [reduce using rule 83 (attribute-specifier-seq-opt)] BOOL [reduce using rule 83 (attribute-specifier-seq-opt)] SHORT [reduce using rule 83 (attribute-specifier-seq-opt)] INT [reduce using rule 83 (attribute-specifier-seq-opt)] LONG [reduce using rule 83 (attribute-specifier-seq-opt)] SIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] UNSIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] FLOAT [reduce using rule 83 (attribute-specifier-seq-opt)] DOUBLE [reduce using rule 83 (attribute-specifier-seq-opt)] VOID [reduce using rule 83 (attribute-specifier-seq-opt)] STATIC [reduce using rule 83 (attribute-specifier-seq-opt)] THREAD_LOCAL [reduce using rule 83 (attribute-specifier-seq-opt)] MUTABLE [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 971 attribute-specifier-seq-opt go to state 972 block-declaration go to state 973 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 974 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 labeled-statement go to state 975 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1288 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 277 expression → • assignment-expression 278 | • expression COMMA assignment-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 368 iteration-statement → DO statement WHILE OPEN_PAREN • expression CLOSE_PAREN SEMICOLON 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 1289 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
155 condition-opt → condition • $default reduce using rule 155 (condition-opt)
369 iteration-statement → FOR OPEN_PAREN init-statement condition-opt • SEMICOLON expression-opt CLOSE_PAREN statement SEMICOLON shift, and go to state 1290
45 alignment-specifier → • ALIGNAS OPEN_PAREN type-id ELLIPSIS-opt CLOSE_PAREN 46 | • ALIGNAS OPEN_PAREN constant-expression ELLIPSIS-opt CLOSE_PAREN 80 attribute-specifier → • OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE 81 | • alignment-specifier 82 attribute-specifier-seq → attribute-specifier-seq-opt • attribute-specifier 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 320 for-range-declaration → attribute-specifier-seq-opt • decl-specifier-seq declarator 321 | attribute-specifier-seq-opt • decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id CONSTEXPR shift, and go to state 1 EXTERN shift, and go to state 149 IDENTIFIER shift, and go to state 4 INLINE shift, and go to state 150 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 ALIGNAS shift, and go to state 157 OPEN_SQUARE shift, and go to state 161 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] $default reduce using rule 709 (type-constraint-opt) alignment-specifier go to state 165 attribute-specifier go to state 166 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 1291 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 153 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109
370 iteration-statement → FOR OPEN_PAREN init-statement-opt for-range-declaration • COLON for-range-initializer CLOSE_PAREN statement COLON shift, and go to state 1292
377 labeled-statement → attribute-specifier-seq-opt CASE constant-expression COLON statement • $default reduce using rule 377 (labeled-statement)
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, EXTERN, IDENTIFIER, INLINE, SCOPE, TYPENAME, VIRTUAL, ALIGNAS, OPEN_SQUARE, CLASS, STRUCT, UNION, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, ENUM, EXPLICIT, AUTO, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE] 84 | • attribute-specifier-seq 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 152 condition → • expression 153 | • attribute-specifier-seq-opt decl-specifier-seq declarator brace-or-equal-initializer 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 277 expression → • assignment-expression 278 | • expression COMMA assignment-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 627 selection-statement → IF CONSTEXPR-opt OPEN_PAREN init-statement-opt • condition CLOSE_PAREN statement 628 | IF CONSTEXPR-opt OPEN_PAREN init-statement-opt • condition CLOSE_PAREN statement ELSE statement 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] OPEN_SQUARE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] DELETE reduce using rule 19 (SCOPE-opt) NEW reduce using rule 19 (SCOPE-opt) AUTO reduce using rule 83 (attribute-specifier-seq-opt) AUTO [reduce using rule 709 (type-constraint-opt)] CHAR [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR8_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR16_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR32_T [reduce using rule 83 (attribute-specifier-seq-opt)] WCHAR_T [reduce using rule 83 (attribute-specifier-seq-opt)] BOOL [reduce using rule 83 (attribute-specifier-seq-opt)] SHORT [reduce using rule 83 (attribute-specifier-seq-opt)] INT [reduce using rule 83 (attribute-specifier-seq-opt)] LONG [reduce using rule 83 (attribute-specifier-seq-opt)] SIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] UNSIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] FLOAT [reduce using rule 83 (attribute-specifier-seq-opt)] DOUBLE [reduce using rule 83 (attribute-specifier-seq-opt)] VOID [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 1236 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 condition go to state 1293 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 1238 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
629 selection-statement → IF NOT-opt CONSTEVAL compound-statement • [CONSTEXPR, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, NOT, SCOPE, THIS, TYPENAME, VIRTUAL, PLUS, MINUS, USING, SEMICOLON, ALIGNAS, OPEN_PAREN, AND, ASM, OPEN_SQUARE, CO_AWAIT, OPEN_BRACE, CLOSE_BRACE, CLASS, STRUCT, UNION, OPERATOR, CO_RETURN, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DELETE, ENUM, EXPLICIT, MULT, DEFAULT, TRY, WHILE, DO, FOR, BREAK, CONTINUE, RETURN, GOTO, CASE, NAMESPACE, REQUIRES, NEW, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, DYNAMIC_CAST, STATIC_CAST, REINTERPRET_CAST, CONST_CAST, TYPEID, LITERAL, IF, ELSE, SWITCH, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE, THROW, SIZEOF, ALIGNOF, CO_YIELD] 630 | IF NOT-opt CONSTEVAL compound-statement • ELSE statement ELSE shift, and go to state 1294 ELSE [reduce using rule 629 (selection-statement)] $default reduce using rule 629 (selection-statement)
631 selection-statement → SWITCH OPEN_PAREN init-statement-opt condition • CLOSE_PAREN statement CLOSE_PAREN shift, and go to state 1295
261 exception-declaration → ELLIPSIS • $default reduce using rule 261 (exception-declaration)
45 alignment-specifier → • ALIGNAS OPEN_PAREN type-id ELLIPSIS-opt CLOSE_PAREN 46 | • ALIGNAS OPEN_PAREN constant-expression ELLIPSIS-opt CLOSE_PAREN 80 attribute-specifier → • OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE 81 | • alignment-specifier 82 attribute-specifier-seq → attribute-specifier-seq-opt • attribute-specifier 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 175 cv-qualifier → • CONST 176 | • VOLATILE 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 246 enum-name → • IDENTIFIER 259 exception-declaration → attribute-specifier-seq-opt • type-specifier-seq declarator 260 | attribute-specifier-seq-opt • type-specifier-seq abstract-declarator-opt 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 728 type-specifier-seq → • type-specifier attribute-specifier-seq-opt 729 | • type-specifier type-specifier-seq 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 ALIGNAS shift, and go to state 157 OPEN_SQUARE shift, and go to state 161 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 124 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] $default reduce using rule 709 (type-constraint-opt) alignment-specifier go to state 165 attribute-specifier go to state 166 class-key go to state 404 class-name go to state 55 cv-qualifier go to state 57 decltype-specifier go to state 63 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 placeholder-type-specifier go to state 94 simple-template-id go to state 96 simple-type-specifier go to state 97 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 412 type-specifier-seq go to state 1296 typedef-name go to state 108 typename-specifier go to state 109
335 handler → CATCH OPEN_PAREN exception-declaration • CLOSE_PAREN compound-statement CLOSE_PAREN shift, and go to state 1297
624 return-type-requirement → DEREF type-constraint • $default reduce using rule 624 (return-type-requirement)
148 compound-requirement → OPEN_BRACE expression CLOSE_BRACE NOEXCEPT-opt return-type-requirement-opt SEMICOLON • $default reduce using rule 148 (compound-requirement)
45 alignment-specifier → • ALIGNAS OPEN_PAREN type-id ELLIPSIS-opt CLOSE_PAREN 46 | • ALIGNAS OPEN_PAREN constant-expression ELLIPSIS-opt CLOSE_PAREN 80 attribute-specifier → • OPEN_SQUARE OPEN_SQUARE attribute-using-prefix-opt attribute-list CLOSE_SQUARE CLOSE_SQUARE 81 | • alignment-specifier 82 attribute-specifier-seq → attribute-specifier-seq-opt • attribute-specifier 495 noptr-new-declarator → noptr-new-declarator OPEN_SQUARE constant-expression CLOSE_SQUARE attribute-specifier-seq-opt • [COMMA, ELLIPSIS, PLUS, MINUS, EQ, SEMICOLON, OPEN_PAREN, CLOSE_PAREN, AND, MULT_EQ, DIV_EQ, MOD_EQ, PLUS_EQ, MINUS_EQ, RSHIFT_EQ, LSHIFT_EQ, AND_EQ, XOR_EQ, OR_EQ, OPEN_SQUARE, CLOSE_SQUARE, COLON, OPEN_BRACE, CLOSE_BRACE, SPACESHIP, QUERY, AND_AND, OR_OR, EQ_EQ, NOT_EQ, XOR, LESS, GREATER, MULT, DIV, MOD, OR, LSHIFT, RSHIFT, LESS_EQ, GREATER_EQ, DOT_STAR, DEREF_STAR] ALIGNAS shift, and go to state 157 OPEN_SQUARE shift, and go to state 161 OPEN_SQUARE [reduce using rule 495 (noptr-new-declarator)] $default reduce using rule 495 (noptr-new-declarator) alignment-specifier go to state 165 attribute-specifier go to state 166
116 brace-or-equal-initializer → • EQ initializer-clause 117 | • braced-init-list 120 braced-init-list → • OPEN_BRACE initializer-list COMMA-opt CLOSE_BRACE 121 | • OPEN_BRACE designated-initializer-list COMMA-opt CLOSE_BRACE 122 | • OPEN_BRACE CLOSE_BRACE 153 condition → attribute-specifier-seq-opt decl-specifier-seq declarator • brace-or-equal-initializer EQ shift, and go to state 376 OPEN_BRACE shift, and go to state 378 brace-or-equal-initializer go to state 1298 braced-init-list go to state 381
367 iteration-statement → WHILE OPEN_PAREN condition CLOSE_PAREN statement • $default reduce using rule 367 (iteration-statement)
278 expression → expression • COMMA assignment-expression 368 iteration-statement → DO statement WHILE OPEN_PAREN expression • CLOSE_PAREN SEMICOLON COMMA shift, and go to state 532 CLOSE_PAREN shift, and go to state 1299
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 90 await-expression → • CO_AWAIT cast-expression 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 277 expression → • assignment-expression 278 | • expression COMMA assignment-expression 282 expression-opt → • %empty [CLOSE_PAREN] 283 | • expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 369 iteration-statement → FOR OPEN_PAREN init-statement condition-opt SEMICOLON • expression-opt CLOSE_PAREN statement 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] CLOSE_PAREN reduce using rule 282 (expression-opt) DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 await-expression go to state 268 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expression go to state 1108 expression-opt go to state 1300 fold-expression go to state 277 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
5 ELLIPSIS-opt → • %empty [IDENTIFIER, SCOPE, OPERATOR, DECLTYPE, COMPL] 6 | • ELLIPSIS 137 class-name → • IDENTIFIER 138 | • simple-template-id 211 declarator → • ptr-declarator 212 | • noptr-declarator parameters-and-qualifiers trailing-return-type 213 declarator-id → • ELLIPSIS-opt id-expression 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 320 for-range-declaration → attribute-specifier-seq-opt decl-specifier-seq • declarator 321 | attribute-specifier-seq-opt decl-specifier-seq • ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 490 noptr-declarator → • declarator-id attribute-specifier-seq-opt 491 | • noptr-declarator parameters-and-qualifiers 492 | • noptr-declarator OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 493 | • OPEN_PAREN ptr-declarator CLOSE_PAREN 590 ptr-declarator → • noptr-declarator 591 | • ptr-operator ptr-declarator 592 ptr-operator → • MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 593 | • AND attribute-specifier-seq-opt 594 | • AND_AND attribute-specifier-seq-opt 595 | • nested-name-specifier MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 601 ref-qualifier → • AND 602 | • AND_AND 603 ref-qualifier-opt → • %empty [OPEN_SQUARE] 604 | • ref-qualifier 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id ELLIPSIS shift, and go to state 155 IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 OPEN_PAREN shift, and go to state 158 AND shift, and go to state 1301 AND_AND shift, and go to state 1302 DECLTYPE shift, and go to state 21 MULT shift, and go to state 163 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] SCOPE [reduce using rule 5 (ELLIPSIS-opt)] OPEN_SQUARE reduce using rule 603 (ref-qualifier-opt) DECLTYPE [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 164 class-name go to state 55 declarator go to state 1303 declarator-id go to state 170 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 noptr-declarator go to state 172 ptr-declarator go to state 173 ptr-operator go to state 174 ref-qualifier go to state 339 ref-qualifier-opt go to state 1304 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
19 SCOPE-opt → • %empty [DELETE, NEW] 20 | • SCOPE 41 additive-expression → • multiplicative-expression 42 | • additive-expression PLUS multiplicative-expression 43 | • additive-expression MINUS multiplicative-expression 47 and-expression → • equality-expression 48 | • and-expression AND equality-expression 50 assignment-expression → • conditional-expression 51 | • yield-expression 52 | • throw-expression 53 | • logical-or-expression assignment-operator initializer-clause 90 await-expression → • CO_AWAIT cast-expression 120 braced-init-list → • OPEN_BRACE initializer-list COMMA-opt CLOSE_BRACE 121 | • OPEN_BRACE designated-initializer-list COMMA-opt CLOSE_BRACE 122 | • OPEN_BRACE CLOSE_BRACE 129 cast-expression → • unary-expression 130 | • OPEN_PAREN type-id CLOSE_PAREN cast-expression 137 class-name → • IDENTIFIER 138 | • simple-template-id 146 compare-expression → • shift-expression 147 | • compare-expression SPACESHIP shift-expression 156 conditional-expression → • logical-or-expression 157 | • logical-or-expression QUERY expression COLON assignment-expression 169 conversion-function-id → • OPERATOR conversion-type-id 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 222 delete-expression → • SCOPE-opt DELETE cast-expression 223 | • SCOPE-opt DELETE OPEN_SQUARE CLOSE_SQUARE cast-expression 246 enum-name → • IDENTIFIER 256 equality-expression → • relational-expression 257 | • equality-expression EQ_EQ relational-expression 258 | • equality-expression NOT_EQ relational-expression 262 exclusive-or-expression → • and-expression 263 | • exclusive-or-expression XOR and-expression 273 expr-or-braced-init-list → • expression 274 | • braced-init-list 277 expression → • assignment-expression 278 | • expression COMMA assignment-expression 285 fold-expression → • OPEN_PAREN cast-expression fold-operator ELLIPSIS CLOSE_PAREN 286 | • OPEN_PAREN ELLIPSIS fold-operator cast-expression CLOSE_PAREN 287 | • OPEN_PAREN cast-expression fold-operator ELLIPSIS fold-operator cast-expression CLOSE_PAREN 322 for-range-initializer → • expr-or-braced-init-list 340 id-expression → • unqualified-id 341 | • qualified-id 344 inclusive-or-expression → • exclusive-or-expression 345 | • inclusive-or-expression OR exclusive-or-expression 370 iteration-statement → FOR OPEN_PAREN init-statement-opt for-range-declaration COLON • for-range-initializer CLOSE_PAREN statement 386 lambda-expression → • lambda-introducer lambda-declarator compound-statement 387 | • lambda-introducer LESS template-parameter-list GREATER requires-clause-opt lambda-declarator compound-statement 388 lambda-introducer → • OPEN_SQUARE lambda-capture-opt CLOSE_SQUARE 392 literal-operator-id → • OPERATOR string-literal IDENTIFIER 393 | • OPERATOR user-defined-string-literal 394 logical-and-expression → • inclusive-or-expression 395 | • logical-and-expression AND_AND inclusive-or-expression 396 logical-or-expression → • logical-and-expression 397 | • logical-or-expression OR_OR logical-and-expression 439 multiplicative-expression → • pm-expression 440 | • multiplicative-expression MULT pm-expression 441 | • multiplicative-expression DIV pm-expression 442 | • multiplicative-expression MOD pm-expression 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 466 new-expression → • SCOPE-opt NEW new-placement-opt new-type-id new-initializer-opt 467 | • SCOPE-opt NEW new-placement-opt OPEN_PAREN type-id CLOSE_PAREN new-initializer-opt 477 noexcept-expression → • NOEXCEPT OPEN_PAREN expression CLOSE_PAREN 497 operator-function-id → • OPERATOR overloadable-operator 498 | • OPERATOR overloadable-operator LESS template-argument-list-opt GREATER 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 556 pm-expression → • cast-expression 557 | • pm-expression DOT_STAR cast-expression 558 | • pm-expression DEREF_STAR cast-expression 559 postfix-expression → • primary-expression 560 | • postfix-expression OPEN_SQUARE expression-list-opt CLOSE_SQUARE 561 | • postfix-expression OPEN_PAREN expression-list-opt CLOSE_PAREN 562 | • simple-type-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 563 | • typename-specifier OPEN_PAREN expression-list-opt CLOSE_PAREN 564 | • simple-type-specifier braced-init-list 565 | • typename-specifier braced-init-list 566 | • postfix-expression DOT TEMPLATE-opt id-expression 567 | • postfix-expression DEREF TEMPLATE-opt id-expression 568 | • postfix-expression PLUS_PLUS 569 | • postfix-expression MINUS_MINUS 570 | • DYNAMIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 571 | • STATIC_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 572 | • REINTERPRET_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 573 | • CONST_CAST LESS type-id GREATER OPEN_PAREN expression CLOSE_PAREN 574 | • TYPEID OPEN_PAREN expression CLOSE_PAREN 575 | • TYPEID OPEN_PAREN type-id CLOSE_PAREN 576 primary-expression → • LITERAL 577 | • THIS 578 | • OPEN_PAREN expression CLOSE_PAREN 579 | • id-expression 580 | • lambda-expression 581 | • fold-expression 582 | • requires-expression 599 qualified-id → • nested-name-specifier TEMPLATE-opt unqualified-id 605 relational-expression → • compare-expression 606 | • relational-expression LESS compare-expression 607 | • relational-expression GREATER compare-expression 608 | • relational-expression LESS_EQ compare-expression 609 | • relational-expression GREATER_EQ compare-expression 623 requires-expression → • REQUIRES requirement-parameter-list-opt requirement-body 632 shift-expression → • additive-expression 633 | • shift-expression LSHIFT additive-expression 634 | • shift-expression RSHIFT additive-expression 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 692 template-id → • simple-template-id 693 | • operator-function-id LESS template-argument-list-opt GREATER 694 | • literal-operator-id LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 700 throw-expression → • THROW assignment-expression-opt 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 735 unary-expression → • postfix-expression 736 | • unary-operator cast-expression 737 | • PLUS_PLUS cast-expression 738 | • MINUS_MINUS cast-expression 739 | • await-expression 740 | • SIZEOF unary-expression 741 | • SIZEOF OPEN_PAREN type-id CLOSE_PAREN 742 | • SIZEOF ELLIPSIS OPEN_PAREN IDENTIFIER CLOSE_PAREN 743 | • ALIGNOF OPEN_PAREN type-id CLOSE_PAREN 744 | • noexcept-expression 745 | • new-expression 746 | • delete-expression 747 unary-operator → • MULT 748 | • AND 749 | • PLUS 750 | • MINUS 751 | • NOT 752 | • COMPL 754 unqualified-id → • IDENTIFIER 755 | • operator-function-id 756 | • conversion-function-id 757 | • literal-operator-id 758 | • COMPL type-name 759 | • COMPL decltype-specifier 760 | • template-id 774 yield-expression → • CO_YIELD assignment-expression 775 | • CO_YIELD braced-init-list IDENTIFIER shift, and go to state 237 NOEXCEPT shift, and go to state 238 NOT shift, and go to state 239 SCOPE shift, and go to state 240 THIS shift, and go to state 241 TYPENAME shift, and go to state 8 PLUS shift, and go to state 242 MINUS shift, and go to state 243 OPEN_PAREN shift, and go to state 244 AND shift, and go to state 245 OPEN_SQUARE shift, and go to state 246 CO_AWAIT shift, and go to state 247 OPEN_BRACE shift, and go to state 378 OPERATOR shift, and go to state 248 DECLTYPE shift, and go to state 21 MULT shift, and go to state 249 REQUIRES shift, and go to state 250 COMPL shift, and go to state 251 PLUS_PLUS shift, and go to state 252 MINUS_MINUS shift, and go to state 253 DYNAMIC_CAST shift, and go to state 254 STATIC_CAST shift, and go to state 255 REINTERPRET_CAST shift, and go to state 256 CONST_CAST shift, and go to state 257 TYPEID shift, and go to state 258 LITERAL shift, and go to state 259 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 THROW shift, and go to state 260 SIZEOF shift, and go to state 261 ALIGNOF shift, and go to state 262 CO_YIELD shift, and go to state 263 IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] AUTO reduce using rule 709 (type-constraint-opt) $default reduce using rule 19 (SCOPE-opt) SCOPE-opt go to state 264 additive-expression go to state 265 and-expression go to state 266 assignment-expression go to state 267 await-expression go to state 268 braced-init-list go to state 1177 cast-expression go to state 269 class-name go to state 55 compare-expression go to state 270 conditional-expression go to state 271 conversion-function-id go to state 272 decltype-specifier go to state 63 delete-expression go to state 273 enum-name go to state 71 equality-expression go to state 274 exclusive-or-expression go to state 275 expr-or-braced-init-list go to state 1305 expression go to state 1180 fold-expression go to state 277 for-range-initializer go to state 1306 id-expression go to state 278 inclusive-or-expression go to state 279 lambda-expression go to state 280 lambda-introducer go to state 281 literal-operator-id go to state 282 logical-and-expression go to state 283 logical-or-expression go to state 284 multiplicative-expression go to state 285 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 286 nested-name-specifier-opt go to state 90 new-expression go to state 287 noexcept-expression go to state 288 operator-function-id go to state 289 placeholder-type-specifier go to state 94 pm-expression go to state 290 postfix-expression go to state 291 primary-expression go to state 292 qualified-id go to state 293 relational-expression go to state 294 requires-expression go to state 295 shift-expression go to state 296 simple-template-id go to state 297 simple-type-specifier go to state 298 template-id go to state 299 template-name go to state 102 throw-expression go to state 300 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 typedef-name go to state 108 typename-specifier go to state 301 unary-expression go to state 302 unary-operator go to state 303 unqualified-id go to state 304 yield-expression go to state 305
627 selection-statement → IF CONSTEXPR-opt OPEN_PAREN init-statement-opt condition • CLOSE_PAREN statement 628 | IF CONSTEXPR-opt OPEN_PAREN init-statement-opt condition • CLOSE_PAREN statement ELSE statement CLOSE_PAREN shift, and go to state 1307
44 alias-declaration → • USING IDENTIFIER attribute-specifier-seq-opt EQ defining-type-id SEMICOLON 49 asm-declaration → • attribute-specifier-seq-opt ASM OPEN_PAREN string-literal CLOSE_PAREN SEMICOLON 82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, NOT, SCOPE, THIS, TYPENAME, VIRTUAL, PLUS, MINUS, USING, SEMICOLON, ALIGNAS, OPEN_PAREN, AND, ASM, OPEN_SQUARE, CO_AWAIT, OPEN_BRACE, CLASS, STRUCT, UNION, OPERATOR, CO_RETURN, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DELETE, ENUM, EXPLICIT, MULT, DEFAULT, TRY, WHILE, DO, FOR, BREAK, CONTINUE, RETURN, GOTO, CASE, REQUIRES, NEW, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, DYNAMIC_CAST, STATIC_CAST, REINTERPRET_CAST, CONST_CAST, TYPEID, LITERAL, IF, SWITCH, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE, THROW, SIZEOF, ALIGNOF, CO_YIELD] 84 | • attribute-specifier-seq 107 block-declaration → • simple-declaration 108 | • asm-declaration 109 | • namespace-alias-definition 110 | • using-declaration 111 | • using-enum-declaration 112 | • using-directive 113 | • static_assert-declaration 114 | • alias-declaration 115 | • opaque-enum-declaration 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 210 declaration-statement → • block-declaration 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 376 labeled-statement → • attribute-specifier-seq-opt IDENTIFIER COLON statement 377 | • attribute-specifier-seq-opt CASE constant-expression COLON statement 378 | • attribute-specifier-seq-opt DEFAULT COLON statement 444 namespace-alias → • IDENTIFIER 445 namespace-alias-definition → • NAMESPACE IDENTIFIER EQ qualified-namespace-specifier SEMICOLON 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 496 opaque-enum-declaration → • enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt SEMICOLON 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 630 selection-statement → IF NOT-opt CONSTEVAL compound-statement ELSE • statement 639 simple-declaration → • decl-specifier-seq init-declarator-list-opt SEMICOLON 640 | • attribute-specifier-seq decl-specifier-seq init-declarator-list SEMICOLON 641 | • attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE initializer SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 663 statement → • labeled-statement 664 | • attribute-specifier-seq-opt expression-statement 665 | • attribute-specifier-seq-opt compound-statement 666 | • attribute-specifier-seq-opt selection-statement 667 | • attribute-specifier-seq-opt iteration-statement 668 | • attribute-specifier-seq-opt jump-statement 669 | • declaration-statement 670 | • attribute-specifier-seq-opt try-block 675 static_assert-declaration → • STATIC_ASSERT OPEN_PAREN constant-expression CLOSE_PAREN SEMICOLON 676 | • STATIC_ASSERT OPEN_PAREN constant-expression COMMA string-literal CLOSE_PAREN SEMICOLON 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 762 using-declaration → • USING using-declarator-list SEMICOLON 766 using-directive → • attribute-specifier-seq-opt USING NAMESPACE nested-name-specifier-opt namespace-name SEMICOLON 767 using-enum-declaration → • USING elaborated-enum-specifier SEMICOLON CONSTEXPR shift, and go to state 1 EXTERN shift, and go to state 149 IDENTIFIER shift, and go to state 4 INLINE shift, and go to state 150 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 USING shift, and go to state 10 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 NAMESPACE shift, and go to state 970 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC_ASSERT shift, and go to state 41 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 CONSTEXPR [reduce using rule 83 (attribute-specifier-seq-opt)] EXTERN [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] INLINE [reduce using rule 83 (attribute-specifier-seq-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] VIRTUAL [reduce using rule 83 (attribute-specifier-seq-opt)] USING [reduce using rule 83 (attribute-specifier-seq-opt)] CLASS [reduce using rule 83 (attribute-specifier-seq-opt)] STRUCT [reduce using rule 83 (attribute-specifier-seq-opt)] UNION [reduce using rule 83 (attribute-specifier-seq-opt)] CONST [reduce using rule 83 (attribute-specifier-seq-opt)] VOLATILE [reduce using rule 83 (attribute-specifier-seq-opt)] FRIEND [reduce using rule 83 (attribute-specifier-seq-opt)] TYPEDEF [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTEVAL [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTINIT [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] ENUM [reduce using rule 83 (attribute-specifier-seq-opt)] EXPLICIT [reduce using rule 83 (attribute-specifier-seq-opt)] AUTO reduce using rule 83 (attribute-specifier-seq-opt) AUTO [reduce using rule 709 (type-constraint-opt)] CHAR [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR8_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR16_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR32_T [reduce using rule 83 (attribute-specifier-seq-opt)] WCHAR_T [reduce using rule 83 (attribute-specifier-seq-opt)] BOOL [reduce using rule 83 (attribute-specifier-seq-opt)] SHORT [reduce using rule 83 (attribute-specifier-seq-opt)] INT [reduce using rule 83 (attribute-specifier-seq-opt)] LONG [reduce using rule 83 (attribute-specifier-seq-opt)] SIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] UNSIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] FLOAT [reduce using rule 83 (attribute-specifier-seq-opt)] DOUBLE [reduce using rule 83 (attribute-specifier-seq-opt)] VOID [reduce using rule 83 (attribute-specifier-seq-opt)] STATIC [reduce using rule 83 (attribute-specifier-seq-opt)] THREAD_LOCAL [reduce using rule 83 (attribute-specifier-seq-opt)] MUTABLE [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 971 attribute-specifier-seq-opt go to state 972 block-declaration go to state 973 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 974 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 labeled-statement go to state 975 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1308 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113
44 alias-declaration → • USING IDENTIFIER attribute-specifier-seq-opt EQ defining-type-id SEMICOLON 49 asm-declaration → • attribute-specifier-seq-opt ASM OPEN_PAREN string-literal CLOSE_PAREN SEMICOLON 82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, NOT, SCOPE, THIS, TYPENAME, VIRTUAL, PLUS, MINUS, USING, SEMICOLON, ALIGNAS, OPEN_PAREN, AND, ASM, OPEN_SQUARE, CO_AWAIT, OPEN_BRACE, CLASS, STRUCT, UNION, OPERATOR, CO_RETURN, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DELETE, ENUM, EXPLICIT, MULT, DEFAULT, TRY, WHILE, DO, FOR, BREAK, CONTINUE, RETURN, GOTO, CASE, REQUIRES, NEW, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, DYNAMIC_CAST, STATIC_CAST, REINTERPRET_CAST, CONST_CAST, TYPEID, LITERAL, IF, SWITCH, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE, THROW, SIZEOF, ALIGNOF, CO_YIELD] 84 | • attribute-specifier-seq 107 block-declaration → • simple-declaration 108 | • asm-declaration 109 | • namespace-alias-definition 110 | • using-declaration 111 | • using-enum-declaration 112 | • using-directive 113 | • static_assert-declaration 114 | • alias-declaration 115 | • opaque-enum-declaration 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 210 declaration-statement → • block-declaration 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 376 labeled-statement → • attribute-specifier-seq-opt IDENTIFIER COLON statement 377 | • attribute-specifier-seq-opt CASE constant-expression COLON statement 378 | • attribute-specifier-seq-opt DEFAULT COLON statement 444 namespace-alias → • IDENTIFIER 445 namespace-alias-definition → • NAMESPACE IDENTIFIER EQ qualified-namespace-specifier SEMICOLON 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 496 opaque-enum-declaration → • enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt SEMICOLON 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 631 selection-statement → SWITCH OPEN_PAREN init-statement-opt condition CLOSE_PAREN • statement 639 simple-declaration → • decl-specifier-seq init-declarator-list-opt SEMICOLON 640 | • attribute-specifier-seq decl-specifier-seq init-declarator-list SEMICOLON 641 | • attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE initializer SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 663 statement → • labeled-statement 664 | • attribute-specifier-seq-opt expression-statement 665 | • attribute-specifier-seq-opt compound-statement 666 | • attribute-specifier-seq-opt selection-statement 667 | • attribute-specifier-seq-opt iteration-statement 668 | • attribute-specifier-seq-opt jump-statement 669 | • declaration-statement 670 | • attribute-specifier-seq-opt try-block 675 static_assert-declaration → • STATIC_ASSERT OPEN_PAREN constant-expression CLOSE_PAREN SEMICOLON 676 | • STATIC_ASSERT OPEN_PAREN constant-expression COMMA string-literal CLOSE_PAREN SEMICOLON 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 762 using-declaration → • USING using-declarator-list SEMICOLON 766 using-directive → • attribute-specifier-seq-opt USING NAMESPACE nested-name-specifier-opt namespace-name SEMICOLON 767 using-enum-declaration → • USING elaborated-enum-specifier SEMICOLON CONSTEXPR shift, and go to state 1 EXTERN shift, and go to state 149 IDENTIFIER shift, and go to state 4 INLINE shift, and go to state 150 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 USING shift, and go to state 10 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 NAMESPACE shift, and go to state 970 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC_ASSERT shift, and go to state 41 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 CONSTEXPR [reduce using rule 83 (attribute-specifier-seq-opt)] EXTERN [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] INLINE [reduce using rule 83 (attribute-specifier-seq-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] VIRTUAL [reduce using rule 83 (attribute-specifier-seq-opt)] USING [reduce using rule 83 (attribute-specifier-seq-opt)] CLASS [reduce using rule 83 (attribute-specifier-seq-opt)] STRUCT [reduce using rule 83 (attribute-specifier-seq-opt)] UNION [reduce using rule 83 (attribute-specifier-seq-opt)] CONST [reduce using rule 83 (attribute-specifier-seq-opt)] VOLATILE [reduce using rule 83 (attribute-specifier-seq-opt)] FRIEND [reduce using rule 83 (attribute-specifier-seq-opt)] TYPEDEF [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTEVAL [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTINIT [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] ENUM [reduce using rule 83 (attribute-specifier-seq-opt)] EXPLICIT [reduce using rule 83 (attribute-specifier-seq-opt)] AUTO reduce using rule 83 (attribute-specifier-seq-opt) AUTO [reduce using rule 709 (type-constraint-opt)] CHAR [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR8_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR16_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR32_T [reduce using rule 83 (attribute-specifier-seq-opt)] WCHAR_T [reduce using rule 83 (attribute-specifier-seq-opt)] BOOL [reduce using rule 83 (attribute-specifier-seq-opt)] SHORT [reduce using rule 83 (attribute-specifier-seq-opt)] INT [reduce using rule 83 (attribute-specifier-seq-opt)] LONG [reduce using rule 83 (attribute-specifier-seq-opt)] SIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] UNSIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] FLOAT [reduce using rule 83 (attribute-specifier-seq-opt)] DOUBLE [reduce using rule 83 (attribute-specifier-seq-opt)] VOID [reduce using rule 83 (attribute-specifier-seq-opt)] STATIC [reduce using rule 83 (attribute-specifier-seq-opt)] THREAD_LOCAL [reduce using rule 83 (attribute-specifier-seq-opt)] MUTABLE [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 971 attribute-specifier-seq-opt go to state 972 block-declaration go to state 973 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 974 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 labeled-statement go to state 975 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1309 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113
5 ELLIPSIS-opt → • %empty [IDENTIFIER, SCOPE, OPERATOR, DECLTYPE, COMPL] 6 | • ELLIPSIS 29 abstract-declarator → • ptr-abstract-declarator 30 | • noptr-abstract-declarator-opt parameters-and-qualifiers trailing-return-type 31 | • abstract-pack-declarator 32 abstract-declarator-opt → • %empty [CLOSE_PAREN] 33 | • abstract-declarator 34 abstract-pack-declarator → • noptr-abstract-pack-declarator 35 | • ptr-operator abstract-pack-declarator 137 class-name → • IDENTIFIER 138 | • simple-template-id 211 declarator → • ptr-declarator 212 | • noptr-declarator parameters-and-qualifiers trailing-return-type 213 declarator-id → • ELLIPSIS-opt id-expression 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 246 enum-name → • IDENTIFIER 259 exception-declaration → attribute-specifier-seq-opt type-specifier-seq • declarator 260 | attribute-specifier-seq-opt type-specifier-seq • abstract-declarator-opt 444 namespace-alias → • IDENTIFIER 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 482 noptr-abstract-declarator → • noptr-abstract-declarator-opt parameters-and-qualifiers 483 | • noptr-abstract-declarator-opt OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 484 | • OPEN_PAREN ptr-abstract-declarator CLOSE_PAREN 485 noptr-abstract-declarator-opt → • %empty [OPEN_PAREN, OPEN_SQUARE] 486 | • noptr-abstract-declarator 487 noptr-abstract-pack-declarator → • noptr-abstract-pack-declarator parameters-and-qualifiers 488 | • noptr-abstract-pack-declarator OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 489 | • ELLIPSIS 490 noptr-declarator → • declarator-id attribute-specifier-seq-opt 491 | • noptr-declarator parameters-and-qualifiers 492 | • noptr-declarator OPEN_SQUARE constant-expression-opt CLOSE_SQUARE attribute-specifier-seq-opt 493 | • OPEN_PAREN ptr-declarator CLOSE_PAREN 586 ptr-abstract-declarator → • noptr-abstract-declarator 587 | • ptr-operator ptr-abstract-declarator-opt 590 ptr-declarator → • noptr-declarator 591 | • ptr-operator ptr-declarator 592 ptr-operator → • MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 593 | • AND attribute-specifier-seq-opt 594 | • AND_AND attribute-specifier-seq-opt 595 | • nested-name-specifier MULT attribute-specifier-seq-opt cv-qualifier-seq-opt 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 695 template-name → • IDENTIFIER 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 730 typedef-name → • IDENTIFIER 731 | • simple-template-id ELLIPSIS shift, and go to state 914 IDENTIFIER shift, and go to state 4 SCOPE shift, and go to state 6 OPEN_PAREN shift, and go to state 915 AND shift, and go to state 159 AND_AND shift, and go to state 162 DECLTYPE shift, and go to state 21 MULT shift, and go to state 163 IDENTIFIER [reduce using rule 5 (ELLIPSIS-opt)] SCOPE [reduce using rule 5 (ELLIPSIS-opt)] OPEN_PAREN [reduce using rule 485 (noptr-abstract-declarator-opt)] CLOSE_PAREN reduce using rule 32 (abstract-declarator-opt) OPEN_SQUARE reduce using rule 485 (noptr-abstract-declarator-opt) DECLTYPE [reduce using rule 5 (ELLIPSIS-opt)] $default reduce using rule 5 (ELLIPSIS-opt) ELLIPSIS-opt go to state 164 abstract-declarator go to state 682 abstract-declarator-opt go to state 1310 abstract-pack-declarator go to state 684 class-name go to state 55 declarator go to state 1311 declarator-id go to state 170 decltype-specifier go to state 120 enum-name go to state 71 namespace-alias go to state 85 namespace-name go to state 88 nested-name-specifier go to state 186 noptr-abstract-declarator go to state 685 noptr-abstract-declarator-opt go to state 686 noptr-abstract-pack-declarator go to state 687 noptr-declarator go to state 172 ptr-abstract-declarator go to state 688 ptr-declarator go to state 173 ptr-operator go to state 918 simple-template-id go to state 96 template-name go to state 102 type-name go to state 106 typedef-name go to state 108
149 compound-statement → • OPEN_BRACE statement-seq-opt CLOSE_BRACE 335 handler → CATCH OPEN_PAREN exception-declaration CLOSE_PAREN • compound-statement OPEN_BRACE shift, and go to state 792 compound-statement go to state 1312
153 condition → attribute-specifier-seq-opt decl-specifier-seq declarator brace-or-equal-initializer • $default reduce using rule 153 (condition)
368 iteration-statement → DO statement WHILE OPEN_PAREN expression CLOSE_PAREN • SEMICOLON SEMICOLON shift, and go to state 1313
369 iteration-statement → FOR OPEN_PAREN init-statement condition-opt SEMICOLON expression-opt • CLOSE_PAREN statement CLOSE_PAREN shift, and go to state 1314
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [ELLIPSIS, IDENTIFIER, SCOPE, ALIGNAS, OPEN_PAREN, AND, OPEN_SQUARE, AND_AND, OPERATOR, DECLTYPE, MULT, COMPL] 84 | • attribute-specifier-seq 593 ptr-operator → AND • attribute-specifier-seq-opt 601 ref-qualifier → AND • [OPEN_SQUARE] OPEN_SQUARE reduce using rule 83 (attribute-specifier-seq-opt) OPEN_SQUARE [reduce using rule 601 (ref-qualifier)] $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 329
82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [ELLIPSIS, IDENTIFIER, SCOPE, ALIGNAS, OPEN_PAREN, AND, OPEN_SQUARE, AND_AND, OPERATOR, DECLTYPE, MULT, COMPL] 84 | • attribute-specifier-seq 594 ptr-operator → AND_AND • attribute-specifier-seq-opt 602 ref-qualifier → AND_AND • [OPEN_SQUARE] OPEN_SQUARE reduce using rule 83 (attribute-specifier-seq-opt) OPEN_SQUARE [reduce using rule 602 (ref-qualifier)] $default reduce using rule 83 (attribute-specifier-seq-opt) attribute-specifier-seq go to state 176 attribute-specifier-seq-opt go to state 332
320 for-range-declaration → attribute-specifier-seq-opt decl-specifier-seq declarator • $default reduce using rule 320 (for-range-declaration)
321 for-range-declaration → attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt • OPEN_SQUARE identifier-list CLOSE_SQUARE OPEN_SQUARE shift, and go to state 1315
322 for-range-initializer → expr-or-braced-init-list • $default reduce using rule 322 (for-range-initializer)
370 iteration-statement → FOR OPEN_PAREN init-statement-opt for-range-declaration COLON for-range-initializer • CLOSE_PAREN statement CLOSE_PAREN shift, and go to state 1316
44 alias-declaration → • USING IDENTIFIER attribute-specifier-seq-opt EQ defining-type-id SEMICOLON 49 asm-declaration → • attribute-specifier-seq-opt ASM OPEN_PAREN string-literal CLOSE_PAREN SEMICOLON 82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, NOT, SCOPE, THIS, TYPENAME, VIRTUAL, PLUS, MINUS, USING, SEMICOLON, ALIGNAS, OPEN_PAREN, AND, ASM, OPEN_SQUARE, CO_AWAIT, OPEN_BRACE, CLASS, STRUCT, UNION, OPERATOR, CO_RETURN, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DELETE, ENUM, EXPLICIT, MULT, DEFAULT, TRY, WHILE, DO, FOR, BREAK, CONTINUE, RETURN, GOTO, CASE, REQUIRES, NEW, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, DYNAMIC_CAST, STATIC_CAST, REINTERPRET_CAST, CONST_CAST, TYPEID, LITERAL, IF, SWITCH, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE, THROW, SIZEOF, ALIGNOF, CO_YIELD] 84 | • attribute-specifier-seq 107 block-declaration → • simple-declaration 108 | • asm-declaration 109 | • namespace-alias-definition 110 | • using-declaration 111 | • using-enum-declaration 112 | • using-directive 113 | • static_assert-declaration 114 | • alias-declaration 115 | • opaque-enum-declaration 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 210 declaration-statement → • block-declaration 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 376 labeled-statement → • attribute-specifier-seq-opt IDENTIFIER COLON statement 377 | • attribute-specifier-seq-opt CASE constant-expression COLON statement 378 | • attribute-specifier-seq-opt DEFAULT COLON statement 444 namespace-alias → • IDENTIFIER 445 namespace-alias-definition → • NAMESPACE IDENTIFIER EQ qualified-namespace-specifier SEMICOLON 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 496 opaque-enum-declaration → • enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt SEMICOLON 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 627 selection-statement → IF CONSTEXPR-opt OPEN_PAREN init-statement-opt condition CLOSE_PAREN • statement 628 | IF CONSTEXPR-opt OPEN_PAREN init-statement-opt condition CLOSE_PAREN • statement ELSE statement 639 simple-declaration → • decl-specifier-seq init-declarator-list-opt SEMICOLON 640 | • attribute-specifier-seq decl-specifier-seq init-declarator-list SEMICOLON 641 | • attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE initializer SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 663 statement → • labeled-statement 664 | • attribute-specifier-seq-opt expression-statement 665 | • attribute-specifier-seq-opt compound-statement 666 | • attribute-specifier-seq-opt selection-statement 667 | • attribute-specifier-seq-opt iteration-statement 668 | • attribute-specifier-seq-opt jump-statement 669 | • declaration-statement 670 | • attribute-specifier-seq-opt try-block 675 static_assert-declaration → • STATIC_ASSERT OPEN_PAREN constant-expression CLOSE_PAREN SEMICOLON 676 | • STATIC_ASSERT OPEN_PAREN constant-expression COMMA string-literal CLOSE_PAREN SEMICOLON 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 762 using-declaration → • USING using-declarator-list SEMICOLON 766 using-directive → • attribute-specifier-seq-opt USING NAMESPACE nested-name-specifier-opt namespace-name SEMICOLON 767 using-enum-declaration → • USING elaborated-enum-specifier SEMICOLON CONSTEXPR shift, and go to state 1 EXTERN shift, and go to state 149 IDENTIFIER shift, and go to state 4 INLINE shift, and go to state 150 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 USING shift, and go to state 10 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 NAMESPACE shift, and go to state 970 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC_ASSERT shift, and go to state 41 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 CONSTEXPR [reduce using rule 83 (attribute-specifier-seq-opt)] EXTERN [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] INLINE [reduce using rule 83 (attribute-specifier-seq-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] VIRTUAL [reduce using rule 83 (attribute-specifier-seq-opt)] USING [reduce using rule 83 (attribute-specifier-seq-opt)] CLASS [reduce using rule 83 (attribute-specifier-seq-opt)] STRUCT [reduce using rule 83 (attribute-specifier-seq-opt)] UNION [reduce using rule 83 (attribute-specifier-seq-opt)] CONST [reduce using rule 83 (attribute-specifier-seq-opt)] VOLATILE [reduce using rule 83 (attribute-specifier-seq-opt)] FRIEND [reduce using rule 83 (attribute-specifier-seq-opt)] TYPEDEF [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTEVAL [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTINIT [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] ENUM [reduce using rule 83 (attribute-specifier-seq-opt)] EXPLICIT [reduce using rule 83 (attribute-specifier-seq-opt)] AUTO reduce using rule 83 (attribute-specifier-seq-opt) AUTO [reduce using rule 709 (type-constraint-opt)] CHAR [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR8_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR16_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR32_T [reduce using rule 83 (attribute-specifier-seq-opt)] WCHAR_T [reduce using rule 83 (attribute-specifier-seq-opt)] BOOL [reduce using rule 83 (attribute-specifier-seq-opt)] SHORT [reduce using rule 83 (attribute-specifier-seq-opt)] INT [reduce using rule 83 (attribute-specifier-seq-opt)] LONG [reduce using rule 83 (attribute-specifier-seq-opt)] SIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] UNSIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] FLOAT [reduce using rule 83 (attribute-specifier-seq-opt)] DOUBLE [reduce using rule 83 (attribute-specifier-seq-opt)] VOID [reduce using rule 83 (attribute-specifier-seq-opt)] STATIC [reduce using rule 83 (attribute-specifier-seq-opt)] THREAD_LOCAL [reduce using rule 83 (attribute-specifier-seq-opt)] MUTABLE [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 971 attribute-specifier-seq-opt go to state 972 block-declaration go to state 973 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 974 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 labeled-statement go to state 975 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1317 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113
630 selection-statement → IF NOT-opt CONSTEVAL compound-statement ELSE statement • $default reduce using rule 630 (selection-statement)
631 selection-statement → SWITCH OPEN_PAREN init-statement-opt condition CLOSE_PAREN statement • $default reduce using rule 631 (selection-statement)
260 exception-declaration → attribute-specifier-seq-opt type-specifier-seq abstract-declarator-opt • $default reduce using rule 260 (exception-declaration)
259 exception-declaration → attribute-specifier-seq-opt type-specifier-seq declarator • $default reduce using rule 259 (exception-declaration)
335 handler → CATCH OPEN_PAREN exception-declaration CLOSE_PAREN compound-statement • $default reduce using rule 335 (handler)
368 iteration-statement → DO statement WHILE OPEN_PAREN expression CLOSE_PAREN SEMICOLON • $default reduce using rule 368 (iteration-statement)
44 alias-declaration → • USING IDENTIFIER attribute-specifier-seq-opt EQ defining-type-id SEMICOLON 49 asm-declaration → • attribute-specifier-seq-opt ASM OPEN_PAREN string-literal CLOSE_PAREN SEMICOLON 82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, NOT, SCOPE, THIS, TYPENAME, VIRTUAL, PLUS, MINUS, USING, SEMICOLON, ALIGNAS, OPEN_PAREN, AND, ASM, OPEN_SQUARE, CO_AWAIT, OPEN_BRACE, CLASS, STRUCT, UNION, OPERATOR, CO_RETURN, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DELETE, ENUM, EXPLICIT, MULT, DEFAULT, TRY, WHILE, DO, FOR, BREAK, CONTINUE, RETURN, GOTO, CASE, REQUIRES, NEW, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, DYNAMIC_CAST, STATIC_CAST, REINTERPRET_CAST, CONST_CAST, TYPEID, LITERAL, IF, SWITCH, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE, THROW, SIZEOF, ALIGNOF, CO_YIELD] 84 | • attribute-specifier-seq 107 block-declaration → • simple-declaration 108 | • asm-declaration 109 | • namespace-alias-definition 110 | • using-declaration 111 | • using-enum-declaration 112 | • using-directive 113 | • static_assert-declaration 114 | • alias-declaration 115 | • opaque-enum-declaration 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 210 declaration-statement → • block-declaration 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 369 iteration-statement → FOR OPEN_PAREN init-statement condition-opt SEMICOLON expression-opt CLOSE_PAREN • statement 376 labeled-statement → • attribute-specifier-seq-opt IDENTIFIER COLON statement 377 | • attribute-specifier-seq-opt CASE constant-expression COLON statement 378 | • attribute-specifier-seq-opt DEFAULT COLON statement 444 namespace-alias → • IDENTIFIER 445 namespace-alias-definition → • NAMESPACE IDENTIFIER EQ qualified-namespace-specifier SEMICOLON 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 496 opaque-enum-declaration → • enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt SEMICOLON 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 639 simple-declaration → • decl-specifier-seq init-declarator-list-opt SEMICOLON 640 | • attribute-specifier-seq decl-specifier-seq init-declarator-list SEMICOLON 641 | • attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE initializer SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 663 statement → • labeled-statement 664 | • attribute-specifier-seq-opt expression-statement 665 | • attribute-specifier-seq-opt compound-statement 666 | • attribute-specifier-seq-opt selection-statement 667 | • attribute-specifier-seq-opt iteration-statement 668 | • attribute-specifier-seq-opt jump-statement 669 | • declaration-statement 670 | • attribute-specifier-seq-opt try-block 675 static_assert-declaration → • STATIC_ASSERT OPEN_PAREN constant-expression CLOSE_PAREN SEMICOLON 676 | • STATIC_ASSERT OPEN_PAREN constant-expression COMMA string-literal CLOSE_PAREN SEMICOLON 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 762 using-declaration → • USING using-declarator-list SEMICOLON 766 using-directive → • attribute-specifier-seq-opt USING NAMESPACE nested-name-specifier-opt namespace-name SEMICOLON 767 using-enum-declaration → • USING elaborated-enum-specifier SEMICOLON CONSTEXPR shift, and go to state 1 EXTERN shift, and go to state 149 IDENTIFIER shift, and go to state 4 INLINE shift, and go to state 150 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 USING shift, and go to state 10 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 NAMESPACE shift, and go to state 970 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC_ASSERT shift, and go to state 41 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 CONSTEXPR [reduce using rule 83 (attribute-specifier-seq-opt)] EXTERN [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] INLINE [reduce using rule 83 (attribute-specifier-seq-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] VIRTUAL [reduce using rule 83 (attribute-specifier-seq-opt)] USING [reduce using rule 83 (attribute-specifier-seq-opt)] CLASS [reduce using rule 83 (attribute-specifier-seq-opt)] STRUCT [reduce using rule 83 (attribute-specifier-seq-opt)] UNION [reduce using rule 83 (attribute-specifier-seq-opt)] CONST [reduce using rule 83 (attribute-specifier-seq-opt)] VOLATILE [reduce using rule 83 (attribute-specifier-seq-opt)] FRIEND [reduce using rule 83 (attribute-specifier-seq-opt)] TYPEDEF [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTEVAL [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTINIT [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] ENUM [reduce using rule 83 (attribute-specifier-seq-opt)] EXPLICIT [reduce using rule 83 (attribute-specifier-seq-opt)] AUTO reduce using rule 83 (attribute-specifier-seq-opt) AUTO [reduce using rule 709 (type-constraint-opt)] CHAR [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR8_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR16_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR32_T [reduce using rule 83 (attribute-specifier-seq-opt)] WCHAR_T [reduce using rule 83 (attribute-specifier-seq-opt)] BOOL [reduce using rule 83 (attribute-specifier-seq-opt)] SHORT [reduce using rule 83 (attribute-specifier-seq-opt)] INT [reduce using rule 83 (attribute-specifier-seq-opt)] LONG [reduce using rule 83 (attribute-specifier-seq-opt)] SIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] UNSIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] FLOAT [reduce using rule 83 (attribute-specifier-seq-opt)] DOUBLE [reduce using rule 83 (attribute-specifier-seq-opt)] VOID [reduce using rule 83 (attribute-specifier-seq-opt)] STATIC [reduce using rule 83 (attribute-specifier-seq-opt)] THREAD_LOCAL [reduce using rule 83 (attribute-specifier-seq-opt)] MUTABLE [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 971 attribute-specifier-seq-opt go to state 972 block-declaration go to state 973 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 974 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 labeled-statement go to state 975 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1318 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113
321 for-range-declaration → attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE • identifier-list CLOSE_SQUARE 342 identifier-list → • IDENTIFIER 343 | • identifier-list COMMA IDENTIFIER IDENTIFIER shift, and go to state 844 identifier-list go to state 1319
44 alias-declaration → • USING IDENTIFIER attribute-specifier-seq-opt EQ defining-type-id SEMICOLON 49 asm-declaration → • attribute-specifier-seq-opt ASM OPEN_PAREN string-literal CLOSE_PAREN SEMICOLON 82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, NOT, SCOPE, THIS, TYPENAME, VIRTUAL, PLUS, MINUS, USING, SEMICOLON, ALIGNAS, OPEN_PAREN, AND, ASM, OPEN_SQUARE, CO_AWAIT, OPEN_BRACE, CLASS, STRUCT, UNION, OPERATOR, CO_RETURN, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DELETE, ENUM, EXPLICIT, MULT, DEFAULT, TRY, WHILE, DO, FOR, BREAK, CONTINUE, RETURN, GOTO, CASE, REQUIRES, NEW, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, DYNAMIC_CAST, STATIC_CAST, REINTERPRET_CAST, CONST_CAST, TYPEID, LITERAL, IF, SWITCH, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE, THROW, SIZEOF, ALIGNOF, CO_YIELD] 84 | • attribute-specifier-seq 107 block-declaration → • simple-declaration 108 | • asm-declaration 109 | • namespace-alias-definition 110 | • using-declaration 111 | • using-enum-declaration 112 | • using-directive 113 | • static_assert-declaration 114 | • alias-declaration 115 | • opaque-enum-declaration 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 210 declaration-statement → • block-declaration 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 370 iteration-statement → FOR OPEN_PAREN init-statement-opt for-range-declaration COLON for-range-initializer CLOSE_PAREN • statement 376 labeled-statement → • attribute-specifier-seq-opt IDENTIFIER COLON statement 377 | • attribute-specifier-seq-opt CASE constant-expression COLON statement 378 | • attribute-specifier-seq-opt DEFAULT COLON statement 444 namespace-alias → • IDENTIFIER 445 namespace-alias-definition → • NAMESPACE IDENTIFIER EQ qualified-namespace-specifier SEMICOLON 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 496 opaque-enum-declaration → • enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt SEMICOLON 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 639 simple-declaration → • decl-specifier-seq init-declarator-list-opt SEMICOLON 640 | • attribute-specifier-seq decl-specifier-seq init-declarator-list SEMICOLON 641 | • attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE initializer SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 663 statement → • labeled-statement 664 | • attribute-specifier-seq-opt expression-statement 665 | • attribute-specifier-seq-opt compound-statement 666 | • attribute-specifier-seq-opt selection-statement 667 | • attribute-specifier-seq-opt iteration-statement 668 | • attribute-specifier-seq-opt jump-statement 669 | • declaration-statement 670 | • attribute-specifier-seq-opt try-block 675 static_assert-declaration → • STATIC_ASSERT OPEN_PAREN constant-expression CLOSE_PAREN SEMICOLON 676 | • STATIC_ASSERT OPEN_PAREN constant-expression COMMA string-literal CLOSE_PAREN SEMICOLON 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 762 using-declaration → • USING using-declarator-list SEMICOLON 766 using-directive → • attribute-specifier-seq-opt USING NAMESPACE nested-name-specifier-opt namespace-name SEMICOLON 767 using-enum-declaration → • USING elaborated-enum-specifier SEMICOLON CONSTEXPR shift, and go to state 1 EXTERN shift, and go to state 149 IDENTIFIER shift, and go to state 4 INLINE shift, and go to state 150 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 USING shift, and go to state 10 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 NAMESPACE shift, and go to state 970 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC_ASSERT shift, and go to state 41 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 CONSTEXPR [reduce using rule 83 (attribute-specifier-seq-opt)] EXTERN [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] INLINE [reduce using rule 83 (attribute-specifier-seq-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] VIRTUAL [reduce using rule 83 (attribute-specifier-seq-opt)] USING [reduce using rule 83 (attribute-specifier-seq-opt)] CLASS [reduce using rule 83 (attribute-specifier-seq-opt)] STRUCT [reduce using rule 83 (attribute-specifier-seq-opt)] UNION [reduce using rule 83 (attribute-specifier-seq-opt)] CONST [reduce using rule 83 (attribute-specifier-seq-opt)] VOLATILE [reduce using rule 83 (attribute-specifier-seq-opt)] FRIEND [reduce using rule 83 (attribute-specifier-seq-opt)] TYPEDEF [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTEVAL [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTINIT [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] ENUM [reduce using rule 83 (attribute-specifier-seq-opt)] EXPLICIT [reduce using rule 83 (attribute-specifier-seq-opt)] AUTO reduce using rule 83 (attribute-specifier-seq-opt) AUTO [reduce using rule 709 (type-constraint-opt)] CHAR [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR8_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR16_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR32_T [reduce using rule 83 (attribute-specifier-seq-opt)] WCHAR_T [reduce using rule 83 (attribute-specifier-seq-opt)] BOOL [reduce using rule 83 (attribute-specifier-seq-opt)] SHORT [reduce using rule 83 (attribute-specifier-seq-opt)] INT [reduce using rule 83 (attribute-specifier-seq-opt)] LONG [reduce using rule 83 (attribute-specifier-seq-opt)] SIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] UNSIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] FLOAT [reduce using rule 83 (attribute-specifier-seq-opt)] DOUBLE [reduce using rule 83 (attribute-specifier-seq-opt)] VOID [reduce using rule 83 (attribute-specifier-seq-opt)] STATIC [reduce using rule 83 (attribute-specifier-seq-opt)] THREAD_LOCAL [reduce using rule 83 (attribute-specifier-seq-opt)] MUTABLE [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 971 attribute-specifier-seq-opt go to state 972 block-declaration go to state 973 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 974 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 labeled-statement go to state 975 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1320 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113
627 selection-statement → IF CONSTEXPR-opt OPEN_PAREN init-statement-opt condition CLOSE_PAREN statement • [CONSTEXPR, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, NOT, SCOPE, THIS, TYPENAME, VIRTUAL, PLUS, MINUS, USING, SEMICOLON, ALIGNAS, OPEN_PAREN, AND, ASM, OPEN_SQUARE, CO_AWAIT, OPEN_BRACE, CLOSE_BRACE, CLASS, STRUCT, UNION, OPERATOR, CO_RETURN, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DELETE, ENUM, EXPLICIT, MULT, DEFAULT, TRY, WHILE, DO, FOR, BREAK, CONTINUE, RETURN, GOTO, CASE, NAMESPACE, REQUIRES, NEW, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, DYNAMIC_CAST, STATIC_CAST, REINTERPRET_CAST, CONST_CAST, TYPEID, LITERAL, IF, ELSE, SWITCH, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC_ASSERT, STATIC, THREAD_LOCAL, MUTABLE, THROW, SIZEOF, ALIGNOF, CO_YIELD] 628 | IF CONSTEXPR-opt OPEN_PAREN init-statement-opt condition CLOSE_PAREN statement • ELSE statement ELSE shift, and go to state 1321 ELSE [reduce using rule 627 (selection-statement)] $default reduce using rule 627 (selection-statement)
369 iteration-statement → FOR OPEN_PAREN init-statement condition-opt SEMICOLON expression-opt CLOSE_PAREN statement • $default reduce using rule 369 (iteration-statement)
321 for-range-declaration → attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list • CLOSE_SQUARE 343 identifier-list → identifier-list • COMMA IDENTIFIER COMMA shift, and go to state 1004 CLOSE_SQUARE shift, and go to state 1322
370 iteration-statement → FOR OPEN_PAREN init-statement-opt for-range-declaration COLON for-range-initializer CLOSE_PAREN statement • $default reduce using rule 370 (iteration-statement)
44 alias-declaration → • USING IDENTIFIER attribute-specifier-seq-opt EQ defining-type-id SEMICOLON 49 asm-declaration → • attribute-specifier-seq-opt ASM OPEN_PAREN string-literal CLOSE_PAREN SEMICOLON 82 attribute-specifier-seq → • attribute-specifier-seq-opt attribute-specifier 83 attribute-specifier-seq-opt → • %empty [CONSTEXPR, EXTERN, IDENTIFIER, INLINE, NOEXCEPT, NOT, SCOPE, THIS, TYPENAME, VIRTUAL, PLUS, MINUS, USING, SEMICOLON, ALIGNAS, OPEN_PAREN, AND, ASM, OPEN_SQUARE, CO_AWAIT, OPEN_BRACE, CLASS, STRUCT, UNION, OPERATOR, CO_RETURN, CONST, VOLATILE, FRIEND, TYPEDEF, CONSTEVAL, CONSTINIT, DECLTYPE, DELETE, ENUM, EXPLICIT, MULT, DEFAULT, TRY, WHILE, DO, FOR, BREAK, CONTINUE, RETURN, GOTO, CASE, REQUIRES, NEW, COMPL, PLUS_PLUS, MINUS_MINUS, AUTO, DYNAMIC_CAST, STATIC_CAST, REINTERPRET_CAST, CONST_CAST, TYPEID, LITERAL, IF, SWITCH, CHAR, CHAR8_T, CHAR16_T, CHAR32_T, WCHAR_T, BOOL, SHORT, INT, LONG, SIGNED, UNSIGNED, FLOAT, DOUBLE, VOID, STATIC, THREAD_LOCAL, MUTABLE, THROW, SIZEOF, ALIGNOF, CO_YIELD] 84 | • attribute-specifier-seq 107 block-declaration → • simple-declaration 108 | • asm-declaration 109 | • namespace-alias-definition 110 | • using-declaration 111 | • using-enum-declaration 112 | • using-directive 113 | • static_assert-declaration 114 | • alias-declaration 115 | • opaque-enum-declaration 131 class-head → • class-key attribute-specifier-seq-opt class-head-name class-virt-specifier-opt base-clause-opt 132 | • class-key attribute-specifier-seq-opt base-clause-opt 134 class-key → • CLASS 135 | • STRUCT 136 | • UNION 137 class-name → • IDENTIFIER 138 | • simple-template-id 142 class-specifier → • class-head OPEN_BRACE member-specification-opt CLOSE_BRACE 175 cv-qualifier → • CONST 176 | • VOLATILE 180 decl-specifier → • storage-class-specifier 181 | • defining-type-specifier 182 | • function-specifier 183 | • FRIEND 184 | • TYPEDEF 185 | • CONSTEXPR 186 | • CONSTEVAL 187 | • CONSTINIT 188 | • INLINE 189 decl-specifier-seq → • decl-specifier attribute-specifier-seq-opt 190 | • decl-specifier decl-specifier-seq 210 declaration-statement → • block-declaration 214 decltype-specifier → • DECLTYPE OPEN_PAREN expression CLOSE_PAREN 217 defining-type-specifier → • type-specifier 218 | • class-specifier 219 | • enum-specifier 228 elaborated-enum-specifier → • ENUM nested-name-specifier-opt IDENTIFIER 229 elaborated-type-specifier → • class-key attribute-specifier-seq-opt nested-name-specifier-opt IDENTIFIER 230 | • class-key simple-template-id 231 | • class-key nested-name-specifier TEMPLATE-opt simple-template-id 232 | • elaborated-enum-specifier 239 enum-head → • enum-key attribute-specifier-seq-opt enum-head-name-opt enum-base-opt 243 enum-key → • ENUM 244 | • ENUM CLASS 245 | • ENUM STRUCT 246 enum-name → • IDENTIFIER 247 enum-specifier → • enum-head OPEN_BRACE enumerator-list-opt CLOSE_BRACE 248 | • enum-head OPEN_BRACE enumerator-list COMMA CLOSE_BRACE 266 explicit-specifier → • EXPLICIT OPEN_PAREN constant-expression CLOSE_PAREN 267 | • EXPLICIT 329 function-specifier → • VIRTUAL 330 | • explicit-specifier 376 labeled-statement → • attribute-specifier-seq-opt IDENTIFIER COLON statement 377 | • attribute-specifier-seq-opt CASE constant-expression COLON statement 378 | • attribute-specifier-seq-opt DEFAULT COLON statement 444 namespace-alias → • IDENTIFIER 445 namespace-alias-definition → • NAMESPACE IDENTIFIER EQ qualified-namespace-specifier SEMICOLON 450 namespace-name → • IDENTIFIER 451 | • namespace-alias 452 nested-name-specifier → • SCOPE 453 | • type-name SCOPE 454 | • namespace-name SCOPE 455 | • decltype-specifier SCOPE 456 | • nested-name-specifier IDENTIFIER SCOPE 457 | • nested-name-specifier TEMPLATE-opt simple-template-id SCOPE 458 nested-name-specifier-opt → • %empty [IDENTIFIER] 459 | • nested-name-specifier 496 opaque-enum-declaration → • enum-key attribute-specifier-seq-opt enum-head-name enum-base-opt SEMICOLON 554 placeholder-type-specifier → • type-constraint-opt AUTO 555 | • type-constraint-opt DECLTYPE OPEN_PAREN AUTO CLOSE_PAREN 628 selection-statement → IF CONSTEXPR-opt OPEN_PAREN init-statement-opt condition CLOSE_PAREN statement ELSE • statement 639 simple-declaration → • decl-specifier-seq init-declarator-list-opt SEMICOLON 640 | • attribute-specifier-seq decl-specifier-seq init-declarator-list SEMICOLON 641 | • attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE initializer SEMICOLON 643 simple-template-id → • template-name LESS template-argument-list-opt GREATER 644 simple-type-specifier → • nested-name-specifier-opt type-name 645 | • nested-name-specifier TEMPLATE simple-template-id 646 | • decltype-specifier 647 | • placeholder-type-specifier 648 | • nested-name-specifier-opt template-name 649 | • CHAR 650 | • CHAR8_T 651 | • CHAR16_T 652 | • CHAR32_T 653 | • WCHAR_T 654 | • BOOL 655 | • SHORT 656 | • INT 657 | • LONG 658 | • SIGNED 659 | • UNSIGNED 660 | • FLOAT 661 | • DOUBLE 662 | • VOID 663 statement → • labeled-statement 664 | • attribute-specifier-seq-opt expression-statement 665 | • attribute-specifier-seq-opt compound-statement 666 | • attribute-specifier-seq-opt selection-statement 667 | • attribute-specifier-seq-opt iteration-statement 668 | • attribute-specifier-seq-opt jump-statement 669 | • declaration-statement 670 | • attribute-specifier-seq-opt try-block 675 static_assert-declaration → • STATIC_ASSERT OPEN_PAREN constant-expression CLOSE_PAREN SEMICOLON 676 | • STATIC_ASSERT OPEN_PAREN constant-expression COMMA string-literal CLOSE_PAREN SEMICOLON 677 storage-class-specifier → • STATIC 678 | • THREAD_LOCAL 679 | • EXTERN 680 | • MUTABLE 695 template-name → • IDENTIFIER 707 type-constraint → • nested-name-specifier-opt concept-name 708 | • nested-name-specifier-opt concept-name LESS template-argument-list-opt GREATER 709 type-constraint-opt → • %empty [DECLTYPE, AUTO] 710 | • type-constraint 712 type-name → • class-name 713 | • enum-name 714 | • typedef-name 724 type-specifier → • simple-type-specifier 725 | • elaborated-type-specifier 726 | • typename-specifier 727 | • cv-qualifier 730 typedef-name → • IDENTIFIER 731 | • simple-template-id 732 typename-specifier → • TYPENAME nested-name-specifier IDENTIFIER 733 | • TYPENAME nested-name-specifier TEMPLATE-opt simple-template-id 762 using-declaration → • USING using-declarator-list SEMICOLON 766 using-directive → • attribute-specifier-seq-opt USING NAMESPACE nested-name-specifier-opt namespace-name SEMICOLON 767 using-enum-declaration → • USING elaborated-enum-specifier SEMICOLON CONSTEXPR shift, and go to state 1 EXTERN shift, and go to state 149 IDENTIFIER shift, and go to state 4 INLINE shift, and go to state 150 SCOPE shift, and go to state 6 TYPENAME shift, and go to state 8 VIRTUAL shift, and go to state 9 USING shift, and go to state 10 CLASS shift, and go to state 12 STRUCT shift, and go to state 13 UNION shift, and go to state 14 CONST shift, and go to state 15 VOLATILE shift, and go to state 16 FRIEND shift, and go to state 17 TYPEDEF shift, and go to state 18 CONSTEVAL shift, and go to state 19 CONSTINIT shift, and go to state 20 DECLTYPE shift, and go to state 21 ENUM shift, and go to state 22 EXPLICIT shift, and go to state 23 NAMESPACE shift, and go to state 970 CHAR shift, and go to state 27 CHAR8_T shift, and go to state 28 CHAR16_T shift, and go to state 29 CHAR32_T shift, and go to state 30 WCHAR_T shift, and go to state 31 BOOL shift, and go to state 32 SHORT shift, and go to state 33 INT shift, and go to state 34 LONG shift, and go to state 35 SIGNED shift, and go to state 36 UNSIGNED shift, and go to state 37 FLOAT shift, and go to state 38 DOUBLE shift, and go to state 39 VOID shift, and go to state 40 STATIC_ASSERT shift, and go to state 41 STATIC shift, and go to state 42 THREAD_LOCAL shift, and go to state 43 MUTABLE shift, and go to state 44 CONSTEXPR [reduce using rule 83 (attribute-specifier-seq-opt)] EXTERN [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 83 (attribute-specifier-seq-opt)] IDENTIFIER [reduce using rule 458 (nested-name-specifier-opt)] INLINE [reduce using rule 83 (attribute-specifier-seq-opt)] SCOPE [reduce using rule 83 (attribute-specifier-seq-opt)] TYPENAME [reduce using rule 83 (attribute-specifier-seq-opt)] VIRTUAL [reduce using rule 83 (attribute-specifier-seq-opt)] USING [reduce using rule 83 (attribute-specifier-seq-opt)] CLASS [reduce using rule 83 (attribute-specifier-seq-opt)] STRUCT [reduce using rule 83 (attribute-specifier-seq-opt)] UNION [reduce using rule 83 (attribute-specifier-seq-opt)] CONST [reduce using rule 83 (attribute-specifier-seq-opt)] VOLATILE [reduce using rule 83 (attribute-specifier-seq-opt)] FRIEND [reduce using rule 83 (attribute-specifier-seq-opt)] TYPEDEF [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTEVAL [reduce using rule 83 (attribute-specifier-seq-opt)] CONSTINIT [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 83 (attribute-specifier-seq-opt)] DECLTYPE [reduce using rule 709 (type-constraint-opt)] ENUM [reduce using rule 83 (attribute-specifier-seq-opt)] EXPLICIT [reduce using rule 83 (attribute-specifier-seq-opt)] AUTO reduce using rule 83 (attribute-specifier-seq-opt) AUTO [reduce using rule 709 (type-constraint-opt)] CHAR [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR8_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR16_T [reduce using rule 83 (attribute-specifier-seq-opt)] CHAR32_T [reduce using rule 83 (attribute-specifier-seq-opt)] WCHAR_T [reduce using rule 83 (attribute-specifier-seq-opt)] BOOL [reduce using rule 83 (attribute-specifier-seq-opt)] SHORT [reduce using rule 83 (attribute-specifier-seq-opt)] INT [reduce using rule 83 (attribute-specifier-seq-opt)] LONG [reduce using rule 83 (attribute-specifier-seq-opt)] SIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] UNSIGNED [reduce using rule 83 (attribute-specifier-seq-opt)] FLOAT [reduce using rule 83 (attribute-specifier-seq-opt)] DOUBLE [reduce using rule 83 (attribute-specifier-seq-opt)] VOID [reduce using rule 83 (attribute-specifier-seq-opt)] STATIC [reduce using rule 83 (attribute-specifier-seq-opt)] THREAD_LOCAL [reduce using rule 83 (attribute-specifier-seq-opt)] MUTABLE [reduce using rule 83 (attribute-specifier-seq-opt)] $default reduce using rule 83 (attribute-specifier-seq-opt) alias-declaration go to state 47 asm-declaration go to state 48 attribute-specifier-seq go to state 971 attribute-specifier-seq-opt go to state 972 block-declaration go to state 973 class-head go to state 53 class-key go to state 54 class-name go to state 55 class-specifier go to state 56 cv-qualifier go to state 57 decl-specifier go to state 58 decl-specifier-seq go to state 59 declaration-statement go to state 974 decltype-specifier go to state 63 defining-type-specifier go to state 65 elaborated-enum-specifier go to state 66 elaborated-type-specifier go to state 67 enum-head go to state 69 enum-key go to state 70 enum-name go to state 71 enum-specifier go to state 72 explicit-specifier go to state 154 function-specifier go to state 79 labeled-statement go to state 975 namespace-alias go to state 85 namespace-alias-definition go to state 86 namespace-name go to state 88 nested-name-specifier go to state 89 nested-name-specifier-opt go to state 90 opaque-enum-declaration go to state 93 placeholder-type-specifier go to state 94 simple-declaration go to state 95 simple-template-id go to state 96 simple-type-specifier go to state 97 statement go to state 1323 static_assert-declaration go to state 98 storage-class-specifier go to state 99 template-name go to state 102 type-constraint go to state 104 type-constraint-opt go to state 105 type-name go to state 106 type-specifier go to state 107 typedef-name go to state 108 typename-specifier go to state 109 using-declaration go to state 111 using-directive go to state 112 using-enum-declaration go to state 113
321 for-range-declaration → attribute-specifier-seq-opt decl-specifier-seq ref-qualifier-opt OPEN_SQUARE identifier-list CLOSE_SQUARE • $default reduce using rule 321 (for-range-declaration)
628 selection-statement → IF CONSTEXPR-opt OPEN_PAREN init-statement-opt condition CLOSE_PAREN statement ELSE statement • $default reduce using rule 628 (selection-statement)